関数定義
Wolfram言語では,関数定義は,パターンに対する変換規則を与える割当てのことです.
Javaプログラマー向けの注意事項
オブジェクト指向のJava言語のメソッドと異なり,Wolfram言語の関数はクラスの階層に制約されません.
x と y の2つの引数を持つ関数を定義します:
Javaプログラマー向けの注意事項
Wolfram言語の基本的な関数定義では,パラメータ名の後にアンダースコア_を使うため,パラメータを任意の記号パターンに対応させることができます.Javaのメソッドの場合とは異なり,Wolfram言語の関数はデフォルトであらゆる種類のデータを受け付けます.
Pythonプログラマー向けの注意事項
Wolfram言語の基本的な関数定義では,パラメータ名の後にアンダースコア_を使うため,パラメータを任意の記号パターンに対応させることができます.これを使うと,Pythonでデフォルトでは不可能な,パワフルで柔軟な関数定義が可能になります.Wolfram Client Library for Pythonのsession.functionを使うと,Pythonで使用するWolfram言語ベースの関数を定義することができます.
定義を使います:
定義を消去します:
関数は,一連のケースにおいて値を指定することで定義することができます.
未定義の場合は変換されません:
/;を使うと,特定の条件が満たされたときだけ定義を適用するよう制約することができます:
Javaプログラマー向けの注意事項
Wolfram言語では,/;演算子は短縮されたIf文のようなものです.
Pythonプログラマー向けの注意事項
Wolfram言語では,/;演算子は,関数に適用される短縮されたIf文のようなものです.これによって,関数は条件に基づいて柔軟に定義を選ぶことができます.
どのような左辺にでも変換を定義することができます.引数の構造を分解する便利な方法です:
Wolfram言語には型のようなものはありません.すべてが記号による式です.式の頭部は,一般化された型の指定子のようなものとして使うことができます.
u オブジェクトと "v オブジェクトに適用されたときの f の動作に対して異なる定義を与えます:
Javaプログラマー向けの注意事項
これはさまざまなデータ型に対するJavaメソッドをオーバーロードすることに似ていますが,Wolfram言語の関数は,その引数の記号的構造に基づいてより一般的にオーバーロードできるという点が異なります.
Pythonプログラマー向けの注意事項
Wolfram言語の関数は組込みのパターンマッチング機能を使って,引数の記号的構造に従ってその動作を変更することができます.Pythonでこれを可能にするためには,かなり複雑なカスタムコードかサードパーティのライブラリが必要です.
参照:変数と関数の定義