なんとまあ関数の中に関数を入れられる。
もちろん無名関数もいける。
foo()を実行すると、なんか関数っぽいのが返ってきてる。
返り値を受け取って実行してみよう。
つーことで、関数は関数を返すこともできる。なんぞそれ。
こういうのを、高階関数っていうらしい。
なんかカッコいい響きだ。
高階関数は関数を返すだけじゃなくて、引数にとることもできる。
すごいですね!
引数として関数を指定する場合はちょっと書き方今までに無い感じだ。
型だけ明示した無名関数的な。
こういうのってJSでもできるんだね。知らなかった。
てかちゃんとJS勉強したことないからなー><
そのうちJSも勉強してみよう。
scala> def foo(x:Int) = {
| def bar(y:Int) = {
| y * 5
| }
| bar(x) + 1
| }
foo: (Int)Int
scala> foo(4)
res57: Int = 21
もちろん無名関数もいける。
scala> def foo() = {
| (x:Int) => x + 8
| }
foo: ()(Int) => Int
scala> foo()
res58: (Int) => Int = <function>
foo()を実行すると、なんか関数っぽいのが返ってきてる。
返り値を受け取って実行してみよう。
scala> val hoge = foo()
hoge: (Int) => Int = <function>
scala> hoge(2)
res59: Int = 10
つーことで、関数は関数を返すこともできる。なんぞそれ。
こういうのを、高階関数っていうらしい。
なんかカッコいい響きだ。
高階関数は関数を返すだけじゃなくて、引数にとることもできる。
scala> def test(x:Int, f:(Int) => Int) = {
| f(x)
| }
test: (Int,(Int) => Int)Int
scala> test(3, foo())
res60: Int = 11
すごいですね!
引数として関数を指定する場合はちょっと書き方今までに無い感じだ。
型だけ明示した無名関数的な。
こういうのってJSでもできるんだね。知らなかった。
てかちゃんとJS勉強したことないからなー><
そのうちJSも勉強してみよう。