如果我使用 new 来初始化 maxima 中的 defstruct 有关系吗?
Does it matter if I use new to initialize a defstruct in 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 的情况下,代码看起来更短更简单,但我不确定如果我使用这种模式,某些代码是否会中断。
我觉得这两种方式都可以。据我所知,唯一的区别是 new(foo(...))
将确保初始值的数量正确。例如 new(foo(1))
和 new(foo(1, 2, 3))
将给出错误,foo
如上所述。只写 foo(1)
或 foo(1, 2, 3)
不会触发错误(也许应该)。
使用 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 的情况下,代码看起来更短更简单,但我不确定如果我使用这种模式,某些代码是否会中断。
我觉得这两种方式都可以。据我所知,唯一的区别是 new(foo(...))
将确保初始值的数量正确。例如 new(foo(1))
和 new(foo(1, 2, 3))
将给出错误,foo
如上所述。只写 foo(1)
或 foo(1, 2, 3)
不会触发错误(也许应该)。