2017-10-28 6 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)을 쓰는 것만으로는 오류가 발생하지 않습니다 (어쩌면 그렇게해야합니다).

관련 문제