Wolfram Computation Meets Knowledge

Wolfram言語:
プログラミングの基本

次の言語の注意事項を表示:
すべてのセクション 
  • Wolfram言語について
  • 次の言語の注意事項を表示:
  • Javaの注意事項を表示
  • Pythonの注意事項を表示
  • 注意事項を隠す
使い始めましょう

関数定義 ビデオバージョン

Wolfram言語では,関数定義は,パターンに対する変換規則を与える割当てのことです.

Javaプログラマー向けの注意事項

オブジェクト指向のJava言語のメソッドと異なり,Wolfram言語の関数はクラスの階層に制約されません.

xy の2つの引数を持つ関数を定義します:

In[1]:=1
f[x_, y_] := x + y

Javaプログラマー向けの注意事項

Wolfram言語の基本的な関数定義では,パラメータ名の後にアンダースコア_を使うため,パラメータを任意の記号パターンに対応させることができます.Javaのメソッドの場合とは異なり,Wolfram言語の関数はデフォルトであらゆる種類のデータを受け付けます.

Pythonプログラマー向けの注意事項

Wolfram言語の基本的な関数定義では,パラメータ名の後にアンダースコア_を使うため,パラメータを任意の記号パターンに対応させることができます.これを使うと,Pythonでデフォルトでは不可能な,パワフルで柔軟な関数定義が可能になります.Wolfram Client Library for Pythonsession.functionを使うと,Pythonで使用するWolfram言語ベースの関数を定義することができます.


定義を使います:

In[2]:=2
f[4, a]
Out[2]=2

定義を消去します:

In[3]:=3
Clear[f]

関数は,一連のケースにおいて値を指定することで定義することができます.

In[1]:=1
f[1] = 2
Out[1]=1

In[2]:=2
f[2] = 3
Out[2]=2

未定義の場合は変換されません:

In[3]:=3
{f[1], f[2], f[3], f[4]}
Out[3]=3

/;を使うと,特定の条件が満たされたときだけ定義を適用するよう制約することができます:

In[4]:=4
f[x_, y_] := x - y /; x > y

Javaプログラマー向けの注意事項

Wolfram言語では,/;演算子は短縮されたIf文のようなものです.

Pythonプログラマー向けの注意事項

Wolfram言語では,/;演算子は,関数に適用される短縮されたIf文のようなものです.これによって,関数は条件に基づいて柔軟に定義を選ぶことができます.


どのような左辺にでも変換を定義することができます.引数の構造を分解する便利な方法です:

In[1]:=1
f[{x_, y_}, z_] := {x + z, y - z}

In[2]:=2
f[{5, 6}, q]
Out[2]=2

Wolfram言語には型のようなものはありません.すべてが記号による式です.式の頭部は,一般化された型の指定子のようなものとして使うことができます.

u オブジェクトと "v オブジェクトに適用されたときの f の動作に対して異なる定義を与えます:

In[1]:=1
f[u[x_]] := x + 1

In[2]:=2
f[v[x_]] := x - 1

Javaプログラマー向けの注意事項

これはさまざまなデータ型に対するJavaメソッドをオーバーロードすることに似ていますが,Wolfram言語の関数は,その引数の記号的構造に基づいてより一般的にオーバーロードできるという点が異なります.

Pythonプログラマー向けの注意事項

Wolfram言語の関数は組込みのパターンマッチング機能を使って,引数の記号的構造に従ってその動作を変更することができます.Pythonでこれを可能にするためには,かなり複雑なカスタムコードかサードパーティのライブラリが必要です.

参照:変数と関数の定義


>2つの数を足す関数f(例:f[3, 4] == 7)を定義しているのは,以下のどれでしょうか?


以下のどの定義を使うと,{f[1], f[2], f[3], f[4]}{f[1], 5, 6, f[4]}に評価されるでしょうか?


関数ff[x_, y_] := x + yと定義されている場合,以下のうちのどれがf[a, b]の値になるでしょうか?

© 2021 Wolfram. All rights reserved.