(아무런 지장없이) 다운 타임 규칙의 lh를 얻기위한 Mathematica에 내장 함수가 있는지 아는 사람 있습니까? 나는 그것을 할 수있는 코드를 작성하는 방법을 알고 있지만, 내장 예를 들어Mathematica Downvalue Lhs
충분한 기본 같다 :이 작동하는 것 같다
a[1]=2;
a[2]=3;
BuiltInIDoNotKnowOf[a]
반환 {1,2}
(아무런 지장없이) 다운 타임 규칙의 lh를 얻기위한 Mathematica에 내장 함수가 있는지 아는 사람 있습니까? 나는 그것을 할 수있는 코드를 작성하는 방법을 알고 있지만, 내장 예를 들어Mathematica Downvalue Lhs
충분한 기본 같다 :이 작동하는 것 같다
a[1]=2;
a[2]=3;
BuiltInIDoNotKnowOf[a]
반환 {1,2}
; 확실하지가 있지만, 어떻게 유용
a[1] = 2
a[2] = 3
a[3] = 5
a[6] = 8
Part[DownValues[a], All, 1, 1, 1]
이 펄과 파이썬과 해시 (일명 사전)를 지원하는 기능이 내장되어있다 다른 언어 keys()
같다. 예제처럼 Mathematica는 특별한 구문없이 해시를 지원합니다. a[1] = 2
이라고 말하면 해시를 가질 수 있습니다. [1] 해시의 키를 얻으려면, 당신 init.m 또는 개인 유틸리티 라이브러리에이를 추가하는 것이 좋습니다 :
keys[f_] := DownValues[f][[All,1,1,1]] (* Keys of a hash/dictionary. *)
(또는 다음 순수 기능 버전은 약간 빠른 가정입니다 :
keys = DownValues[#][[All,1,1,1]]&; (* Keys of a hash/dictionary. *)
)
어느 쪽이든, keys[a]
은 이제 원하는 것을 반환합니다. (당신은 a /@ keys[a]
와 해시 값을 얻을 수 있습니다.) 당신이 더 높은 인수에 대응 해시에 허용 할 경우, a[1,2]=5; a[3,4]=6
다음이 사용할 수 있습니다 같은 :
SetAttributes[removeHead, {HoldAll}];
removeHead[h_[args___]] := {args}
keys[f_] := removeHead @@@ DownValues[f][[All,1]]
{{1,2}, {3,4}}
을 반환한다. (이 경우 a @@@ keys[a]
으로 해시 값을 얻을 수 있습니다.)
기본적으로 DownValues
은 키를 정렬하므로 기껏해야 추가 시간이 소요되므로 키를 정렬하는 것이 좋습니다. 키를 정렬하려면 [email protected][f]
을 사용해도됩니다. 그래서 사실은이 버전을 추천 할 것입니다 :
keys = DownValues[#,Sort->False][[All,1,1,1]]&;
는 흥미롭게도, DownValues
documention에서 Sort
옵션에 대한 언급이 없다. Wolfram Research의 다니엘 리치 블라 우 (Daniel Lichtblau)가 쓴 오래된 글에서 알게되었습니다. (나는 여전히 티카의 현재 버전 (7.0)에서 작동하는 것을 확인했다.)
각주 :
[1] 정말로 편리합니다 것은 당신이 혼합 함수 정의와 일치 할 수 있다는 것입니다. 마찬가지로 :
fib[0] = 1;
fib[1] = 1;
fib[n_] := fib[n-1] + fib[n-2]
당신은 모든 후속 호출에 대한 응답을 캐시 말한다
fib[n_] := fib[n] = fib[n-1] + fib[n-2]
에 마지막 라인을 변경하여 메모이 제이션을 추가 할 수 있습니다.
그래, [[]] 표기법과 비슷한 것을 시도했지만 보류를 해제하고 rhs를 얻을 수 있습니다. 그러나 이것은 위대한 작품! –
DownValues [a] [[All, 1, 1, 1]]처럼 보입니다.이 간단한 예에서 적어도 작동합니다. –