【swift2.2】【備忘】関数についてあれこれ②
こんにちは。エンジニアの石井です。
前回に引き続き関数について。
◾️関数型の返却
関数自体を関数の返却値(型)とすることができる。
func disp(){ let f = calc("+") //fがfuncAdd関数となる print(f(1,2)) } func calc(op:String) -> (Int,Int) -> Int{ switch op { case "+": return funcAdd //funcAdd関数を返却 default: return funcMinus //funcMinus関数を返却 } } func funcAdd(val1:Int,val2:Int)->Int{ return val1+val2 } func funcMinus(val1:Int,val2:Int)->Int{ return val1-val2 }
◾️ネスト関数
ローカル関数みたいなものですね。
func disp(){ let f = calc("+") print(f(1,2)) //fという関数を引数に設定 } func calc(op:String) -> (Int,Int) -> Int{ func funcAdd(val1:Int,val2:Int)->Int{ //ローカル関数としてfuncAddを宣言 return val1+val2 } func funcMinus(val1:Int,val2:Int)->Int{ //ローカル関数としてfuncMinusを宣言 return val1-val2 } switch op { case "+": return funcAdd default: return funcMinus } }
蓋を開けてみるとswiftについては、
分からないことだらけな気がします。