如果我使用new来初始化最大值的defstruct是否重要?

时间:2017-10-28 18:32:12

标签: maxima

使用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,代码似乎更短更容易,但我不确定如果使用这种模式,某些代码是否会中断。

1 个答案:

答案 0 :(得分:2)

我认为两种方式都可以。据我所知,唯一的区别是new(foo(...))将确保有正确数量的初始值。例如,new(foo(1))new(foo(1, 2, 3))会出错,其中foo如上所述。只写foo(1)foo(1, 2, 3)不会触发错误(可能应该)。