2017-10-28 12 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

두 방법 모두 괜찮다고 생각합니다. 지금까지 알고있는 유일한 차이점은 은 올바른 수의 초기 값이 있는지 확인합니다. 예를 들어 new(foo(1))new(foo(1, 2, 3))은 위에서 정의한대로 foo과 함께 오류를 제공합니다. foo(1) 또는 foo(1, 2, 3)을 쓰는 것만으로는 오류가 발생하지 않습니다 (어쩌면 그렇게해야합니다).