Mathematica の記号機能と数値機能を試してみると、Mathematica もまともなプログラミング言語であることがわかりました。ただし、C のような構造体データ型 (または Pascal で知られているレコード型) がないことが、汎用言語として魅力的ではない理由の 1 つです。どうすればこの問題を回避できますか?
4575 次
4 に答える
15
更新: Mathematica 10 では が導入されましAssociation
たstruct
. (新しい回答を参照してください。)この回答の元の、やや非推奨のバージョンを以下に示します。
Mathematicaルール リストを使用して、C に似た構造体データ型を模倣できます。例えば、:
person = {firstName -> "John", lastName -> "Doe"}
/.
次に、演算子を使用してレコードのフィールドにアクセスできます。
firstName /. person
利回りJohn
。
lastName /. person
利回りDoe
。
レコードのフィールドを更新するには、更新されたフィールドをリストの前に追加します。
PrependTo[person , firstName -> "Jane"]
firstName /. person
次に利回りJane
。
変換規則に関するMathematicaのドキュメントも参照してください。
于 2009-09-22T11:17:49.370 に答える
8
あなたの質問を正しく理解できれば、次のように簡単に書くことができます。
x[foo] = バー x[バー] = バズ x[1] = 7 x[7] = 1 ?バツ
次に、特定のインデックスのデータにアクセスするには、同じように入力します (例: x[1]
will return 7
、x[foo]
will return bar
)。
于 2009-09-21T06:42:41.200 に答える
2
この方法は機能します:
x[foo] = bar
x[bar] = baz
x[1] = 7
x[7] = 1
x[c] = {{1,2,3},{4,5,6}}
また、リスト フィールドの要素を変更するには、次のようにします。
x[c] = ReplacePart[x[c], {1, 1} -> 8]
戻り値:
x[c] = {{8,2,3},{4,5,6}}
于 2010-02-05T11:20:57.220 に答える