開発メモ

開発関係のメモをいろいろと。たぶん。

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 修正)