フロー制御

トップページ » フロー制御

20 Jun 2014 00:55公開

※「フロー制御」はまだ工事中です。まず「Swiftの全貌を探る」シリーズの記事を参考してください。

Swiftのコントロールフローを紹介します。

コントロールフロー

条件文:if、switch
条件の場合、boolが必須です。Cの0での表現が利用できません。
ループ文: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
}
}
teamScore

変数定義の後ろに?を付かば、オプショナル(nil可能)を定義できます。
ifとletを一緒に使えば、値のないことをチェックできます。

var optionalString: String? = "Hello"
optionalString == nil
 var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
 greeting = "Hello, \(name)"
}

switchは多様なタイプをサポートしています。

  • Cのような整数と文字の制限がありません
  • breakが必要ない
let vegetable = "red pepper"
switch vegetable {
case "celery":
 let vegetableComment = "Add some raisins and make ants on a log."
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."
}

for-inは配列と連想配列のループ処理ができます。

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
  }
 }
}
largest

whileとdo-while

var n = 2
while n < 100 {
 n = n * 2
}
n
 var m = 2
do {
 m = m * 2
} while m < 100
m

forロープ文は二つの書き方があります。

var firstForLoop = 0
for i in 0..3 {
 firstForLoop += i
}
firstForLoop
 var secondForLoop = 0
for var i = 0; i < 3; ++i {
 secondForLoop += 1
}
secondForLoop

シリーズ

記事のリスト

  • フロー制御

レーティング

rating: 0+x

コメント

Add a New Comment
当サイトコンテンツライセンスについて個別な指定がなければCreative Commons Attribution-ShareAlike 3.0 Licenseをベースします。転載や引用は大歓迎です。但し、転載・引用・二次利用の場合は当サイト記事へのURLをリンクし出典を明記してください。各作品を大切にして下さい。 また、記事及びコメントを投稿する皆さまも上記のライセンスを理解した上投稿して下さい。 当サイトのコンテンツは皆さまの投稿で作成されますから、当サイトの意思を反映しておりませんが、第三者の知的財産権などの侵害がある場合、当サイトの運営担当にご連絡ください。