ラムダ式
無名関数とかその辺のやつ
インラインでメソッド宣言したい
いろんなラムダ式の書き方
C#
デリゲート
式形式のメンバー
=>で{}を省略出来るよ。という話。
1行で済むなら綺麗に書けるね。
プロパティの記述で威力を発揮しそう
参考
=> 演算子 (C# リファレンス)
式形式のメンバー (C# プログラミング ガイド)
式形式のメンバーとか式本体の定義とか
Unity
C#の方式も使えるが、Unity独自デリゲートがまた別にある
UnityAction
UnityEvent
インスペクタに表示されるのが強み
C#のEventHandlerに比べると、まだ枯れた文法をしてる
ruby
code:ruby
bar = -> ( a, b ) { a * b }
bar( 2, 3 ) # => 6
# 他所の言語で使われる => は、rubyではハッシュのセパレータに使う
hoge = {
fuga => :piyo
}
ブロックとラムダ式は微妙に違う概念なので注意
#Javascript
code:javascript
var bar = function(a, b){ a * b } // これは無名関数
bar(2, 3); // => 6
foo = a => a + 1; // これがラムダ式(色々省略した書き方)
a(1); // => 2
無名関数とラムダ式では微妙に仕様が異なる
arguments:無名関数では参照できる。 ラムダ式では参照できない。
thisの参照先:無名関数ではメソッド呼び出し時のレシーバ。 ラムダ式では宣言時のコンテキスト(クロージャのように振る舞う)。
forループ中のラムダ式におけるクロージャ化けにも注意
#Java
ClassクラスとかMethodクラスとかある
関数ポインタとの大きな違いは、クロージャが使えるかどうか、らしい。(?)
#アルゴリズム