Swift Tour (1)
The Swift Programming Language の A Swift Tour より要約する.
もちろん Hello, world から始めよう.
println(“Hello, world”)
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
main関数は必要ない.セミコロンすら必要ない.
定数は次のように定義する.
let myConstant = 42
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
定数 myConstant は型を持つが,その型は推論されるので明示する必要はない.
整数には10進数の他に2進数,8進数,16進数リテラルがあり,2進数でも指数表記が使えたり,16進数で実数が表記できたり,1_000_000のようにアンダースコアを挿入できたりとObjective-C言語に比べると大幅に拡張されている.
ビルトイン型には Bool, Int, Float, Double, String がある.後述するが,関数は第一級オブジェクトであり,また配列型(Array),辞書型(Dictionary),列挙型,タプル,構造体,クラスがある.また他の言語に見られない特徴として,型を「オプショナルな型」にすることができる.これはHaskellのMaybeモナドに近いものである.リファレンスはあるがポインタは無い.
変数を定義したいときは次のようにする.
var myVariable = 42
myVariable = 50
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
変数も型を持つが推論される.型を明示したい場合は次のようにする.
var explicitDouble: Double = 70
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
型は静的に変更できる.
let label = “The width is “
let width = 94
let widthLabel = label + String(width)
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
文字列リテラル “…” の中に (…) があると,括弧の中身は展開される.
let apples = 3
let appleSummary = “I have (apples) apples.”
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
配列を作ることが出来る.
let individualScores = [75, 43, 103, 87, 12]
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
配列要素へのアクセスはいつもの方法で良い.
var shoppingList = [“catfish”, “water”, “tulips”, “blue paint”]
shoppingList[1] = “bottle of water”
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
配列はループで舐めることが出来る.
for score in individualScores {
// …
}
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
// はコメントである.
if文も普通だ.変数scoreがあったとすると
if score > 50 {
// score > 50 のとき…
}
else {
// それ以外のとき…
}
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
条件式はBool型でなければいけない.Bool型が取りうる値は true, false だ.YESとNOではない.
型名の後ろに「?」をつけると,オプショナルな型になる.これはHaskellでいうところのMaybeモナドだ.「?」をつけられた型は,何らかの値か,さもなくばnilを保持できる.オプショナルな型以外はnilを保持できない.
例えば
var optionalName: String? = “John Appleseed”
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
の optionalName は String? 型(オプショナルなString型)なのでnilになれる.これは何らかの例外的状況を表すのに使える.今は強制的にnilを代入してみよう.
optionalName= nil
オプショナルな型を扱うための特別なif文がある.
var greeting = “Hello!”
if let name = optionalName {
greeting = “Hello, (name)”
}
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
もし optionalName がnilでなければ,その値はnameに束縛され,次のブロックが実行される.
switch文はデフォルトではフォールスルーしない(いつもbreakする).
let vegetable = “red pepper”
switch vegetable {
case “celery”:
let vegetableComment = “Add some raisins and make ants on a log.”
// breakは要らない
case “cucumber”, “watercress”:
let vegetableComment = “That would make a good tea sandwich.”
case let x where x.hasSuffix(“pepper”):
let vegetableComment = “Is it a spicy (x)?”
default:
let vegetableComment = “Everything tastes good in soup.”
}
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
ちなみにdefaultは省略できない.
case に続く条件式では if let … 構文と同じように変数束縛が行える.また変数束縛後にwhere節を置いて条件の絞り込みが行える.
多値を受け取るメカニズムがあちらこちらにある.
let interestingNumbers = [
“Prime”: [2, 3, 5, 7, 11, 13],
“Fibonacci”: [1, 1, 2, 3, 5, 8],
“Square”: [1, 4, 9, 16, 25],
]
var largest = 0
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/jp/jEUH0.l
サンプルは省略するが,whileループもあるし,do-whileループだってある.
関数とクロージャについてはまた次回に.