J.log

jakeの日常

Swiftの勉強メモ2

前回の続き。

 

Swiftの勉強メモ - J.log

 

今回は6章の途中、「6.3 関数言語」から。

・関数言語?……変数のように関数を代入できる、みたい。

・関数と変数を用意しておいて、代入することで差し替え。
 加減乗除の関数を用意してswitchで切替とかするのに使える。

・このやり方が関数型言語、らしい。使ったことないけどErlangとかか?
 →まだ理解できてない。VBとかだけだとわからない考え方。

・先ほどの変数、関数型インスタンス変数という呼び方をする。何かを呼び出すからインスタンスなのだろうかね。

・加減乗除とかよりも複雑にできる……シューティングゲームの敵キャラの動きを関数化して現在の座標を入力→次の座標を出力とかすればいいのか。敵キャラの動きに関する処理で種類ごとに分ける部分が最低限になるから処理が短くなる、と見た。

クロージャってのは、匿名関数のこと。名前があったら関数、なかったらクロージャ

クロージャは関数名が重要でない場合に使う。サンプルだと引数に応じて違う種類の演算結果を返していた。

・緯度経度の表現方法を切り替えるとか、距離の単位を切り替えるとかに使えるかな。

クロージャは、(引数) -> 戻り値の型 in 実行文という書式。実行部分が複数になる場合は{}で囲む。これは関数と一緒。

・sorted関数でバブルソートするときに、どういう判断基準にするか?というのをクロージャで与えることができる。

型推論に頼ってクロージャを記述すると、短く記述できる。……が、やり過ぎると何やってるんだかわからない表現になる。このへんはPerlとかで似たような問題を見たことがある気がする。

・マップ関数、よくわからん!

 

時間切れでここまで。続きは6.5.2からやる。