ラムダ式
インラインでメソッド宣言したい
式形式のメンバー
=>で{}を省略出来るよ。という話。
1行で済むなら綺麗に書けるね。
参考
C#の方式も使えるが、Unity独自デリゲートがまた別にある
UnityAction
UnityEvent
C#のEventHandlerに比べると、まだ枯れた文法をしてる
code:ruby
bar = -> ( a, b ) { a * b }
bar( 2, 3 ) # => 6
# 他所の言語で使われる => は、rubyではハッシュのセパレータに使う
hoge = {
fuga => :piyo
}
ブロックとラムダ式は微妙に違う概念なので注意
code:javascript
var bar = function(a, b){ a * b } // これは無名関数
bar(2, 3); // => 6
foo = a => a + 1; // これがラムダ式(色々省略した書き方)
a(1); // => 2
arguments:無名関数では参照できる。 ラムダ式では参照できない。
クロージャと呼んでいる
code:型宣言
extensiton Array {
func any(f: (Element) -> Bool) -> Bool { // (Element) -> Bool の部分
// hoge
}
}
code:格納
array.any(f: { (element: String) -> Bool in
return element.isEmpty
})
ClassクラスとかMethodクラスとかある
関数ポインタとの大きな違いは、クロージャが使えるかどうか、らしい。(?)