2017-10-28 7 views
1

新しいものを使用して、または新しいものを使用してデフ構造を初期化すると、同じことをするようですが、違いはありますか?maximaでdefstructを初期化するためにnewを使用することは重要ですか?

(%i1) defstruct(foo(a,b)); 
(%o1)        [foo(a, b)] 
(%i2) f: foo(1,2); 
(%o2)       foo(a = 1, b = 2) 
(%i3) [email protected]; 
(%o3)         1 
(%i4) f_new: new(foo(1,2)); 
(%o4)       foo(a = 1, b = 2) 
(%i5) [email protected]; 
(%o5)         1 
(%i6) 

このコードを使用すると、コードを少し短く簡単に見えるようになりますが、コードが破損するかどうかはわかりません。

答えて

2

私は両方の方法がOKだと思います。私が知る限り、唯一の違いは、は正しい数の初期値があることを保証することです。例えば、new(foo(1))new(foo(1, 2, 3))は、上記で定義した通りfooでエラーを返します。 foo(1)またはfoo(1, 2, 3)と書いてもエラーは発生しません。

関連する問題