★ for
// Swift2.1まで
for var i = 0 ; i < 10 ; i++ {
print(i)
}
// Swift2.2以降は以下の書き方に変換されます
for i in 0 ..< 10 {
print(i)
}
★ for - in
for i in 0...9 {
print(i)
}
for _ in 0...9 {
// ループ変数を使用しない時は_(アンダースコア)にする
}
for i in 0..<10 {
print(i)
}
for i in [0,1,2,3,4,5,6,7,8,9] {
print(i)
}
var numList = [0,1,2,3,4,5,6,7,8,9]
for i in numList {
print(i)
}
//=> 0 1 2 3 4 5 6 7 8 9
★ for case
class A { var name: String = "KK"}
struct B {}
enum C { case a }
func funcA() { }
let anyArray: [Any] = [A(), B(), C.a, String(), funcA()]
// --- 変換できない例 ---
for case let a in anyArray where a is A {
print(a)
// print(a.name) // Error aはAnyなのでnameにアクセスできない
}
for case let a in anyArray {
if a is A {
// print(a.name) // Error aはAnyなのでnameにアクセスできない
}
}
// --- 変換できる例 ---
// ①
for case let a as A in anyArray {
print(a.name) //=> KK
}
// ②
for case let a in anyArray {
if let a = a as? A {
print(a.name) //=> KK
}
}
// ③
for case let a in anyArray {
switch a {
case let a as A: print(a.name) //=> KK
default: break
}
}