我有一个具有相对复杂数据树的结构。例如:
class.data.head{1}.data2
我希望得到一个名为 data2_link 的变量,用于链接地址 class.data.head {1} .data2 ,以便:
(1)如果 class.data.head {1} .data2 有任何更改,它也会自动反映到 data2_link ,反之亦然。
(2)我不必输入长名称来访问 class.data.head {1} .data2 中的数据。
谢谢!
答案 0 :(得分:4)
Matlab不支持引用。唯一的例外是data2
,它允许引用对象。
要使用它,handle
必须是具有超类data2_link=class.data.head{1}.data2
的对象,那么您只需编写:
{{1}}
除非你使用Matlab 2015b或更新版,否则请注意面向对象的matlab significantly slows down。
答案 1 :(得分:2)
有一种非常沮丧的方法。您可以创建一个评估所需表达式的函数句柄:
data2_link = @() evalin('caller', 'class.data.head{1}.data2')
现在,每当您需要该表达式时,只需使用
调用它>> data2_link()
需要额外的括号来调用函数句柄定义的函数。
答案 2 :(得分:1)
刚才有了另一个想法,你可以使用class UserFactory(factory.Factory)
class Meta:
model = User
name = u"Jean"
@factory.lazy_attribute
def email(self):
# Convert to plain ascii text
clean_name = (unicodedata.normalize('NFKD', self.name)
.encode('ascii', 'ignore')
.decode('utf8'))
return u'%s@example.com' % clean_name
来访问它并subsref
来编写。这不是我所谓的引用,因为你仍然需要subassign
,但它可能在不使用OOP的情况下尽可能接近它。
S