SchoolLinkedinTwitterFacebookPinterestVKEmailPrint関数この和訳は最新です。ファーストクラスオブジェクト)です。Elixirにおける関数の種類について、それぞれどう異なっていて、どのように使うのかを学んでいきます。匿名関数その名前が暗に示している通り、匿名関数は名前を持ちません。レッスンで見たように、匿名関数はたびたび他の関数に渡されます。キーワードが必要です。隔てられた関数の本体とを定義することができます。して扱うことができます。パターンマッチングElixirではパターンマッチングは変数だけに限定されているわけではなく、次の項にあるように、関数へと適用することができます。関数を名前付きで定義して後から呼び出せるようにすることができます。キーワードを用いて定義されます。モジュールについては次のレッスンで学習しますので、今のところ名前付き単体に着目しておきます。モジュール内部で定義される関数は他のモジュールからも使用することができます。3]3関数の命名とアリティ以前言及したとおり、関数は名前とアリティ(引数の数)の組み合わせで命名されます。Jane"関数名の一覧を上記のコメントに載せました。関数として扱われます。数の引数を取る関数定義が複数ある場合のみ適用されます)関数とパターンマッチング内部では、関数は実行された時の引数をパターンマッチングしています。マップを受け取るが、特定のキーにだけ関心がある関数が必要であるとしましょう。endend今度はFredという名前の人物を表すマップを持っているとしましょう。Greeter1.hello/1このような挙動となる理由は、Elixirは関数が実行された際の引数を関数で定義されたアリティに対してパターンマッチさせているためです。対応するキーを見つけます。キーの値は左辺の変数(person_name)に格納されます。使いたいとしましょう。キーだけをパターンマッチしているので、そのキーの値だけが変数に格納され、関数はFredの残りの値に関する知識を持っていません。これを保持するためには、マップ全体を変数にアサインして使用できるようにする必要があります。endendElixirは引数を渡されたままパターンマッチするということを覚えておいてください。そのためこのケースでは、それぞれが渡された引数に対してパターンマッチして、マッチした全てのものを変数に格納します。評価され、fredマップ全体が格納されました。Greeter2.hello/1入ってきたデータに対して独立してパターンマッチして、関数の中でそれらを使用できるようにしたことで、Elixirは複数の奥行きでパターンマッチするという点を確認しました。順序を入れ替えたとしても、それぞれがfredとマッチングするので同じ結果となります。渡された引数をパターンマッチしているということを覚えておいてください。関数は渡されたデータをそれぞれの引数で独立してパターンマッチします。関数の中で別々の変数に格納するためにこれを利用できます。他のモジュールから特定の関数へアクセスさせたくない時には関数をプライベートにすることができます。プライベート関数はそのモジュール自身の内部からのみ呼び出すことが出来ます。Greeter.phrase()ガード制御構造レッスンでもガードについて少しだけ触れましたが、これを名前付き関数に適用する方法を見ていきます。Elixirはある関数にマッチするとそのガードを全てテストします。以下の例では同じ名前を持つ2つの関数があります。Sean"先ほどのガードの例をデフォルト引数と組み合わせると、問題にぶつかります。(module)Elixirは複数のマッチング関数にデフォルト引数があるのを好みません。混乱の元になる可能性があります。