如何向Julia类型添加新字段?

Mis*_*s94 5 julia

在Python中,可以使用setattr向对象添加新属性,如下面的代码

class Foobar:
    def __init__(self):
        pass

foobar = Foobar()
setattr(foobar, 'foo', 123)

print(foobar.foo)
Run Code Online (Sandbox Code Playgroud)

产量

123
Run Code Online (Sandbox Code Playgroud)

我知道在Julia中有setfield!但是它不允许添加像setattrPython 这样的新字段.
所以我的问题是有一种方法可以将新字段添加到复合类型的对象中吗?

Isa*_*ton 12

有没有办法将新字段添加到复合类型的对象?

不,朱莉娅是故意设计的,没有这种局部的动态行为.如果您需要动态添加和删除字段,那么您实际上将该对象用作具有不同语法的字典.在Julia中,您将使用实际字典 -  Dict或其他关联集合 - 来实现这种用法.这没有比像Python这样的语言中的对象更差的性能,尽管它的性能会比Julia中的静态定义类型更差,但这是具有动态字段的对象的固有成本 - 这正是对象无法工作的原因在朱莉娅的方式.