시몬의 방법에 약간의 변화가 아니라 글로벌 변수 ($Center
) 이외의 기능에 디폴트 값을 사용하는 것이다.
myNorm[pos:{_, _}, center_:{5, 5}] := EuclideanDistance[pos, center]
공지 사항 _:{5, 5}
의 사용은 기본 값을 정의 할 수 :
(5 5), 다음 기본 원점은 가정하자.
myNorm[{5, 7}]
(* Out[]= 2 *)
또는 일시적 센터와 다른 사용 : 이제
당신이 할 수있는이 간단한 함수의
myNorm[{5, 7}, {8, 8}]
(* Out[]= Sqrt[10] *)
을 대신 두 번째 경우에 EuclideanDistance
을 사용할 수 있지만 나는 희망 당신은이 방법의 유틸리티가 myNorm
의 정의보다 복잡하다는 것을 알 수 있습니다.
이 방법의 단점은 기본 센터를 쉽게 변경할 수 없다는 것입니다.
Options[myNorm2] = {Center -> {5, 5}};
myNorm2[pos : {_, _}, OptionsPattern[]] :=
EuclideanDistance[pos, OptionValue[Center]]
구문입니다 :
myNorm2[{5, 7}]
myNorm2[{5, 7}, Center -> {8, 8}]
2
Sqrt[10]
는
하나 쉽게 기본 중심을 변경할 수 않지만, 더 자세한 또 다른 변화는, Options
가 사용하는 것입니다
기본값 변경 입력 :
SetOptions[myNorm2, Center -> {8, 8}];
myNorm2[{5, 7}]
Sqrt[10]
@ 500 오신 것을 환영합니다. 다른 방법에 대한 나의 업데이트 된 답변을 참조하십시오. –
첫 번째 버전에서 '기본값'과 똑같은 실수를 저 지르겠습니다. 프로젝트를 진행할 때까지 나는 그저 맨 위에 "$ xyz를 변경하면 다음을 재정의해야합니다. – Simon
@Simon 그것이 우리 둘 다 있다면, 나는 이것에 대해 질문을 올릴 것입니다. 'DefaultValues [f]'가 효과없이 변경된다는 사실은 혼란 스럽습니다. –