swiftには in ってキーワードがありますね。
- SQLのIN演算子的な??<ー違った...
関数定義に使うらしい...
- ググってみたところ関数定義の時に使うらしいです。
関数だと...
func add(x:Int,_ y:Int) -> Int {
return x + y
}
print(add(1,2)) // 3
- これだと使ってませんね...
じゃぁjavascriptの無名関数的な?
- 無名関数ちっくに書いてみると
エラーになりました...
let add2 = func(x:Int,_ y:Int) -> Int { return x + y }
- エラーです。
ここで in の出番です!
inを使うと...
let add3 = { (x:Int,y:Int) -> Int in x + y }
print(add3(1,2)) // 3
- できました。
あれ?中はreturnしか書けないの?
- 安心してください!書けますよ!
構文も書けます。
let add4 = { (x:Int,y:Int) -> Int in
var z = 0
for i in 1...10 {
z += i
}
return (z + x + y)
}
print(add4(1,2)) // 58
- add3 は returnが省略されてたんですね。
組み合わせると関数を返す関数も作れました。
なんのこっちゃ?
let add5 = { (x:Int) -> (Int -> Int) in
return { (y:Int) -> Int in x + y }
}
print(add5(1)) // (Function)
print(add5(1)(2)) // 3
- はい、意味わかりませんね。
- add5(1)は(Int -> Int)な関数を返します。中身はx=1は指定されているので
{ (y:Int) -> Int in 1 + y }
です。 - でその関数の引数を(2)としてadd5(1)(2)とするとその関数の中身が1+2=3となるわけです。
まとめ
- JavaScriptに慣れていれば、型の宣言がちょっと面倒な程度でわりと理解しやすいんじゃないでしょうか?