読者です 読者をやめる 読者になる 読者になる

好き勝手に・げーあにん?

ファミコンと同い年の社会人ヌルオタの日記

lambdaの書き方が覚えられない

Ruby Java C# C++

問.下記のlambda記法がどのプログラミング言語のものか答えよ

  1. ->(){}
  2. ()->{}
  3. ()=>{}
  4. [](){}































答.

  1. Ruby
  2. Java
  3. C# or JavaScript
  4. C++


とりあえず、私が書く可能性のある言語だけ並べたのだが、それでも十分紛らわしい。以下、なんとか覚えるためのメモ。

1. Ruby

->(a,b){ p [a,b] }

lambda{|a,b| p [a,b] }

と同じ。

lambda が -> に変わってて頭に付く、と思えば他と混乱せずに覚えられる気がする。

参考:http://docs.ruby-lang.org/ja/2.2.0/doc/symref.html#rangl

2. Java

3. C#, JavaScript

JavaC# はとても似ている。違いは引数の後に -> か => が来るか。
C# での -> は unsafe の時のポインタで使うことになるので => になっているのだと思えば覚えられるか。

それにしても、なんで JavaJavaScript が違うんだよ。どっちかにあわせてくれよ。


参考

4. C++

capture を [] で指定しないといけないので全然違うと思いきや、戻り値の型を指定しようとすると -> も出てきたりでやっぱり混乱する。
とはいえ、戻り値の型は型推論でなんとかしてくれるので書く必要はあまりない。C++でも型推論がある世界が生まれてきてよかった!(大げさ)


参考:https://msdn.microsoft.com/ja-jp/library/dd293608.aspx