代码之家  ›  专栏  ›  技术社区  ›  Kasper

在maxima中使用new初始化defstruct有关系吗?

  •  1
  • Kasper  · 技术社区  · 7 年前

    (%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 回复  |  直到 7 年前
        1
  •  2
  •   Robert Dodier    7 年前

    我认为两种方式都可以。据我所知,唯一的区别是 new(foo(...)) new(foo(1)) new(foo(1, 2, 3)) 将给出错误,带有 foo 如上所述。只是写作 foo(1) foo(1, 2, 3) 不会触发错误(也许应该)。