Mathematica의 기호 및 수치 기능을 사용하여 연주 한 후에도 적절한 프로그래밍 언어라는 것을 알았습니다. 그러나 범용 언어로 사용하기에는 C와 유사한 구조체 데이터 유형 (또는 파스칼에서 알려진 레코드 유형)이 부족합니다. 이 문제를 어떻게 해결할 수 있습니까?Mathematica의 구조체 데이터 유형은 무엇입니까?
답변
내가 제대로 질문을 이해한다면, 당신은 단순히이 같은 일을 작성할 수 있습니다
다음x[foo] = bar x[bar] = baz x[1] = 7 x[7] = 1 ?x
단지 (동일 예를 들어, x[1]
이 7
를 반환합니다 입력 특정 인덱스의 데이터에 액세스 할 x[foo]
반환합니다 bar
).
업데이트 : 매스 매 티카 (10)은 struct
의 가장 중요한 특성을 많이 가지고 Association
을 발표했다. (new answer을 참조하십시오.)이 답변의 원래 사용되지 않는 버전은 아래와 같습니다.
당신은 티카 규칙은 C와 같은 구조체 데이터 형식을 모방 나열 할 수 있습니다. 예컨대, :.
person = {firstName -> "John", lastName -> "Doe"}
그런 다음 /.
연산자를 사용하여 레코드의 필드에 액세스 할 수 있습니다
firstName /. person
는 John
를 얻을 수 있습니다.
lastName /. person
는 Doe
를 얻을 수 있습니다.
PrependTo[person , firstName -> "Jane"]
firstName /. person
는 Jane
을 얻을 수 있습니다.
transformation rules에 관한 Mathematica 설명서를 참조하십시오.
prepending을 사용하여 몇 가지 변경을하면 사용되지 않은 규칙이 개인 목록에 나타납니다. 별로 효율적이지 않습니다. –
Mathematica 10은 ['Association'] (http://reference.wolfram.com/language/ref/Association.html)을 소개했으며, 이것은'struct'의 가장 중요한 속성들을 많이 가지고 있습니다. [새 대답] (http://stackoverflow.com/a/33465106/330202)을 참조하십시오. –
이 방법을 사용할 수 있습니다 : 또한
x[foo] = bar
x[bar] = baz
x[1] = 7
x[7] = 1
x[c] = {{1,2,3},{4,5,6}}
및 목록 필드의 요소를 변경하면 다음 그렇게 할 수
x[c] = {{8,2,3},{4,5,6}}
티카를 : 리턴
x[c] = ReplacePart[x[c], {1, 1} -> 8]
10은 Association
을 도입했으며, 이는 struct
.Elementary introduction to DataSets 및 Fast introduction for programmers을 :
someData = <| "name" -> "Bob", "age" -> 23 |>
In[1]:= someData["name"]
Out[1]= Bob
In[2]:= someData["age"]
Out[2]= 23
In[3]:= someData[[2]]
Out[3]= 23
더 많은 정보
Association
을 기반으로하는)
Association
DataSet
를 참조하십시오.- Mathematica.SE 질문 : How to make use of Associations 및
- This HackerNews commentStruct equivalent in Mathematica?.
- 1. 이러한 데이터 유형은 무엇입니까?
- 2. REBOL 구조체 란 무엇입니까? 데이터 형식?
- 3. PostgreSQL에서 암호의 데이터 유형은 무엇입니까?
- 4. 서수에 사용할 데이터 유형은 무엇입니까?
- 5. MLSLABEL Oracle 데이터 유형은 무엇입니까?
- 6. 구조체 인수에 구조체 인수 전달이 유형은 런타임에만 알 수 있습니다.
- 7. 적절한 Oracle 데이터 유형은
- 8. 수익 데이터 유형은 mysql입니까?
- 9. mathematica의 텍스트
- 10. SQL - 백분율을 나타내는 데이터 유형은 무엇입니까?
- 11. Android에서 사용해야하는 데이터 저장소 유형은 무엇입니까?
- 12. .Net의 과학 계산에 권장되는 데이터 유형은 무엇입니까?
- 13. 특징 구조 구현 : 사용할 데이터 유형은 무엇입니까?
- 14. iPhone에서 가져올 수있는 데이터 유형은 무엇입니까?
- 15. gorm에서 시간을 사용하기위한 데이터 유형은 무엇입니까?
- 16. MySQL의 통화에 가장 적합한 데이터 유형은 무엇입니까?
- 17. MySQL에 부울 값을 저장할 데이터 유형은 무엇입니까?
- 18. ID를 저장하는 데 사용하는 데이터 유형은 무엇입니까?
- 19. RDBM에 멀티미디어를 저장하기위한 데이터 유형은 무엇입니까?
- 20. Clang 컴파일러의 C enum의 데이터 유형은 무엇입니까?
- 21. base64로 인코딩 된 이미지의 데이터 유형은 무엇입니까?
- 22. LINQ : 결과의 유형은 무엇입니까?
- 23. 자바 데이터 구조체
- 24. C++ 구조체 데이터 멤버
- 25. C# 데이터 멤버로 개체가있는 구조체
- 26. mathematica의 DensityPlot 명령
- 27. Oracle 데이터 유형 NUMERIC에 해당하는 Java 데이터 유형은 무엇입니까?
- 28. 패스 동적 데이터 유형은 작동하려면
- 29. 돈과 함께 사용해야하는 데이터 유형은
- 30. Mathematica의 라이브러리 함수 기능
이 작업 방식은 sakra가 제안한 규칙 접근 방식보다 한 가지 실질적인 이점을 가지고 있습니다.이 기능을 사용하면 "struct"의 "필드"를 간단하게 변경할 수 있습니다. – Pillsy
답변에 문제가 있습니다 : "필드"가 목록 인 경우 해당 요소를 개별적으로 변경할 수 없습니다. 예 : x [foo] = {1,2}; x [foo] [1]] = 3 (* 목록 요소 *를 변경하려고 시도 함) 은 x [foo]가 Lvalue가 아니므로 오류가 발생합니다. 그래서 C 구조체 기능을 완전히 대체하지는 못합니다. – felix
목록의 단일 값을 변경하는 것뿐만 아니라 이전 값을 완전히 바꿔야합니다. f [ "foo"] = {1, 2}; f [ "foo"] = (ReplacePart [f [ "foo"], 1 -> 3]) 또한 심볼이 아닌 키에 문자열 또는 정수를 사용합니다. Set의 UpValues를 설정하여 할 수있는 까다로운 비즈니스가 있습니다. –