Swiftの勉強メモ
Swift言語入門、という本を読みながら大事そうなことをメモ。
Amazonでも売ってるみたいなので、最後にリンクはっときます。
4章くらいまで。
・XCode6のPlaygroundですぐに動かせる。
・変数の型はよくある感じ。
・文字列に対しても演算記号"+="が使える。
・ArrayとDictionaryがある。Arrayは昔ながらの配列、Dictionaryはキーバリューストア?
・変数の宣言はかなり省略しても動く。 var a = [1,2,3,4]とかするとaはInt型の配列になる。型推論が働くため。
・タプルってDictionaryと同じ? 理解しきれてない
・配列に対する操作の大抵はメソッドがある。詰めて番号の振り直しができるとかすげえ便利そう。
・配列の後ろに追加する際も"+="の演算子が使える。
・let s = a.removelast()ってすると、配列の最後の1文字だけを取り出して定数にできる。しかも配列からは削除される。先頭の1文字でコレをやるメソッドは書いてなかった。
・多次元配列は、1次元配列の入れ子で作成する。VBみたいにdim x(2,3) as stringとかは書けない。
・辞書(Dictionary)は、番号のない配列? 名前と値を対で指定する。
・辞書定数は変更不可、配列定数は変更可?配列のページだと定数はサイズ、値ともに変更不可と書いてある。……どっちかの記述が間違ってる。
・演算子が多い?ビット反転とかオーバーフローを無視した乗除は初めて見た。
・println(x++)とprintln(++x)では結果が異なる。前者は式の評価後にインクリメント、後者はその逆?
・演算子のオーバーロードができる。ここは馴染みがなくて理解しきれてない。
・演算子を新しく定義できる。<<>>をsqrt(x*x+y*y)とか。
5章
・if文、forループはC言語と同じ、だと思う。違和感なし。
・for-inループは初耳。範囲演算子を使う。reverse(範囲演算子)とすると逆順。
・for-inループ内に変数を使わない、単純に繰り返すだけならfor _ in 1...10とか指定することができる。
・「十八歳未満」とするなら、for age in 0...<18とする。以下、未満は記号で示せるってのがわかりやすいと思う。
・範囲演算子で、10...1とすると暴走する。小さい数値...大きい数値にしないとダメ。エラー通知してくれない?
・5章のファレイ数列を求めるプログラム、タプルを使うと大幅に短くなることがわかりやすい。
・while、do whileはC言語とだいたい同じ。
・switch caseはbreakが不要。当てはまらない場合はdefaultを実行。defaultは最後に定義する。
・caseには範囲演算子、タプル、文字、文字列などなど指定できる。
・caseにタプルを指定する場合、"_"をワイルドカードにできる。1個目が3で2個目がなんでもいい、などの場合に使える。
・ラベルという概念がある。C言語のgotoではなく、ループにラベルを設定して、ループを全部抜けるのに使ったりする。
6章
・関数定義、戻り値の型定義が ->なのが特徴? VBだとfunction x() as longとかって指定してたので文法的には似てる。
・戻り値にタプルを指定すれば、複数の値をまとめて返せる。
・パラメータ名を定義すると、呼び出すときにもパラメータ名が必須になる。
・ただし、パラメータ名の先頭に"#"をつけると、パラメータ名を省略した呼び出しが可能。
・引数は通常は書き換え不可。宣言のときに"var"をつけると書き換えできる。例えばfunc f(var a:Int)とかする。
・引数の数を変更できる。引数の型の後ろに"..."をつける。範囲演算子じゃないかコレ?
→与えた数値の平均を求める関数とか作れるかも。
・in-outパラメータというのがあるみたい。まだ理解しきれてない。
・なんでも受け入れるジェネリック型の関数で使うらしい。
P157、再帰呼び出しのところで中断。
続きは今度。