The Swift Programming Languageのメモ(その1)
はじめに
これは、『The Swift Programming Language』を読んだ時の個人的なメモです。なので、引用はすべて『The Swift Programming Language』から。
iTunes - ブック - Apple Inc.「The Swift Programming Language」
https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
Welcome to Swift
About Swift
メモ: 特になし
A Swift Tour
println("Hello, world")
- この1行だけで完全なプログラムだよ
- 他にライブラリを取り込む必要はないよ
- グローバルスペースに書いたコードは、エントリーポイントになるよ
つまり、他にmain関数は必要ないよ。 - 文の最後にセミコロンは必要ないよ
Simple Values
『let』は変更できない変数、『var』は変更できる変数だよ
メモ: Objective-Cで言うところのconstの有無みたいなもの。たぶん『let』の値をコンパイル時に決めておく必要はないけど、一度は割り当てないと使えないよ
var myVariable = 42 myVariable = 50 let myConstant = 42
変数を初期化するときに値を与えれば、コンパイラが型を推測してくれるよ
上の例だと、myVariableは整数型だよ。必要なら、型を直接で指定できるよ
型を指定する場合、変数の後に、『:』に続けて型を指定するよ。
let explicitDouble: Double = 70
- 暗黙の型変換はないよ!
必要なときは、明示的に型変換するよ
let label = "The width is " let width = 94 let widthLabel = label + String(width)
- 値を文字列に埋め込む場合、もっと楽な方法があるよ
バックスラッシュと括弧に続けて変数をかけば良いよ。
let apples = 3 let oranges = 5 let appleSummary = "I have \(apples) apples." let fruitSummary = "I have \(apples + oranges) pieces of fruit.
- 配列や辞書を作るときは[]を使うよ
var shoppingList = ["catfish", "water", "tulips", "blue paint"] shoppingList[1] = "bottle of water" var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic", ] occupations["Jayne"] = "Public Relations”
- 空の辞書や配列を作るときは、こんな感じになるよ
let emptyArray = [String]() let emptyDictionary = [String:Float]() let emptyDictionary2 = Dictionary<String, Float>()
Control Flow
- 条件分岐には『if』と『switch』が使えるよ
- ループを作るなら『for-in』『for』『while』『do-while』があるよ
- 条件式の前後の『()』はオプションだよ
- 本文の前後の『{}』は絶対に必要だよ
let individualScores = [75, 43, 103, 87, 12] var teamScore = 0 for score in individualScores { if score > 50 { teamScore += 3 } else { teamScore += 1 } }
- if文の条件にはBooleanが必要だよ
適当な変数を書いても、勝手に0との比較はしないよ
ifとletを組み合わせて使うと、値が無い事がある変数に対応できるよ
- いわゆるオプション変数って呼ばれるやつだよ
- ちゃんとした値かnilか、どっちかが入ってるやつだよ
- オプション変数は、型の後ろに?がついてるよ
var optionalString: String? = "Hello" optionalString = nil var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = optionalName { greeting = "Hello, \(name)" }
- オプション変数がnilの場合、条件がfalseになって本文はスキップされるよ
nilじゃ無ければ、変数に代入されて本文が実行されるよ
switchはどんな種類のデータでも受け付けるよ
- 比較の方法も色んな種類があるよ
caseから勝手に次のcaseに移ることはないよ
for-inは辞書でも使えるよ
- whileやdo-whileはおなじみのやつだよ
- ループを指定するとき範囲を指定する文が使えるよ
- 『..<』は最初の値から最後の値の直前までだよ(最後の値を含まない)
- 『...』は最後の値も含むよ
とりあえずここまで。
(2014/06/05 作成)
(2014/09/26 修正)