使用new或不使用new初始化defstruct,似乎也一样,有什么不同吗?
(%i1) defstruct(foo(a,b));
(%o1) [foo(a, b)]
(%i2) f: foo(1,2);
(%o2) foo(a = 1, b = 2)
(%i3) f@a;
(%o3) 1
(%i4) f_new: new(foo(1,2));
(%o4) foo(a = 1, b = 2)
(%i5) f_new@a;
(%o5) 1
(%i6)
不使用new,代码似乎更短更容易,但我不确定如果使用这种模式,某些代码是否会中断。
答案 0 :(得分:2)
我认为两种方式都可以。据我所知,唯一的区别是new(foo(...))
将确保有正确数量的初始值。例如,new(foo(1))
和new(foo(1, 2, 3))
会出错,其中foo
如上所述。只写foo(1)
或foo(1, 2, 3)
不会触发错误(可能应该)。