J.log

jakeの日常

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)は、番号のない配列? 名前と値を対で指定する。

・辞書定数は変更不可、配列定数は変更可?配列のページだと定数はサイズ、値ともに変更不可と書いてある。……どっちかの記述が間違ってる。

演算子が多い?ビット反転とかオーバーフローを無視した乗除は初めて見た。

演算子の優先順位がC言語と違う。

・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、再帰呼び出しのところで中断。

続きは今度。

 

 

 

次世代iOS、OS XプログラマーのためのSwift言語入門

次世代iOS、OS XプログラマーのためのSwift言語入門