読者です 読者をやめる 読者になる 読者になる

LIFE LITERACY

エンジニアの生活の質を向上させる方法について整理中

iOSアプリ開発入門者のためのSwift文法チートシート

スポンサード リンク

iOSアプリ開発をはじめるにあたり、プログラミング言語Swiftの習熟が必須である。*1

僕のように若くないエンジニアにとって、新しいプログラミング言語を勉強するときは、その文法に慣れるまでが大変で骨が折れる作業となる。 Swiftのさまざまな文法について、記述方法と実行結果について備忘録としてまとめたので紹介する。*2

実行はUbuntuで行っている。UbuntuSwiftをインストールする方法は、以下の記事を参照。

lifeliteracy.hatenablog.com

定数と変数

定数

  1> let s:String = "foo"
s: String = "foo"
  2> s = "bar" // 定数の値を書き換えることはできない
repl.swift:2:3: error: cannot assign to value: 's' is a 'let' constant
s = "bar"
~ ^
repl.swift:1:1: note: change 'let' to 'var' to make it mutable
let s:String = "foo"
^~~
var
  3>

変数

  1> var s:String = "foo"
s: String = "foo"
  2> s = "bar" // 変数の値を書き換えることはできる
  3> s
$R0: String = "bar"
  4>  

基本データ型

整数

  1> var i:Int = 10
i: Int = 10
  2> i + 10
$R0: Int = 20
  3>  

浮動小数点数

  1> var f:Float = 0.1
f: Float = 0.100000001
  2> var d:Double = 0.1
d: Double = 0.10000000000000001
  3>

真偽値

  1> var b:Bool = true
b: Bool = true
  2> b == true
$R0: Bool = true
  3> b == false
$R1: Bool = false
  4>

文字列

  1> var s:String = "Swift"
s: String = "Swift"
  2> print("Hello " + s)
Hello Swift
  3> print("Hello \(s)")
Hello Swift
  4>

制御構造

if文

  1> var score = 100
score: Int = 100
  2> if (score > 90) { 
  3.     print("Excellent") 
  4. } else { 
  5.     print("...") 
  6. } 
Excellent
  7> 

switch文

  1> var c = 3
c: Int = 3
  2> switch c { 
  3. case 1: 
  4.     print("case 1") 
  5. case 2: 
  6.     print("case 2") 
  7. case 3: 
  8.     print("case 3") 
  9.     fallthrough // デフォルトではfallthroughしない
 10. case 4: 
 11.     print("case 4") // ここでbreakされる
 12. default: 
 13.     print("default") 
 14. } 
case 3
case 4
 15> 

for文

  1> for i in 0...2 {
  2.     print(i) 
  3. }
0
1
2
  4> for _ in 0...2 {   // 変数が必要ない場合
  5.     print("hello") 
  6. } 
hello
hello
hello
  7>  

while文

  1> var i = 0
i: Int = 0
  2> while (i < 2) { 
  3.     print(i) 
  4.     i++ 
  5. } 
0
1
  6> repeat {
  7.     print(i) 
  8.     i++ 
  9. } while (i < 2) 
2
 10>

複合型

配列

  1> var a:[Int] = [1, 2, 3]
a: [Int] = 3 values {
  [0] = 1
  [1] = 2
  [2] = 3
}
  2> a[1]
$R0: Int = 2
  3> a.count
$R1: Int = 3
  4> a.append(4)
  5> a
$R2: [Int] = 4 values {
  [0] = 1
  [1] = 2
  [2] = 3
  [3] = 4
}
  6> a.insert(0, atIndex: 0)
  7> a
$R3: [Int] = 5 values {
  [0] = 0
  [1] = 1
  [2] = 2
  [3] = 3
  [4] = 4
}
  8> a.sort({$0 > $1})
$R4: [Int] = 5 values {
  [0] = 4
  [1] = 3
  [2] = 2
  [3] = 1
  [4] = 0
}
  9> a.sort({$0 < $1})
$R5: [Int] = 5 values {
  [0] = 0
  [1] = 1
  [2] = 2
  [3] = 3
  [4] = 4
}
 10> 

辞書

  1> var d = ["a":1, "b":2, "c":3]
d: [String : Int] = 3 key/value pairs {
  [0] = {
    key = "b"
    value = 2
  }
  [1] = {
    key = "a"
    value = 1
  }
  [2] = {
    key = "c"
    value = 3
  }
}
  2> d["b"]
$R0: Int? = 2
  3> d.count
$R1: Int = 3
  4> for (key, value) in d { 
  5.     print("key:   \(key)")
  6.     print("value: \(value)")
  7. } 
key:   b
value: 2
key:   a
value: 1
key:   c
value: 3

タプル

  1> let t = ("a", 1)
t: (String, Int) = {
  0 = "a"
  1 = 1
}
  2> var (s, i) = t
s: String = "a"
i: Int = 1
  3>  

関数

  1> func hello(s:String) { 
  2.     print("Hello " + s) 
  3. } 
  4> hello("Swift")
Hello Swift
  5>  
  6> func hello2(s:String) -> String { 
  7.     return "Hello \(s)" 
  8. } 
  9> print(hello2("Swift"))
Hello Swift
 10>  

まとめ

Swiftの文法は最近流行りの言語と似ており、直感的に書けるため、いまのところは楽しく学習を進めることができている。 以下の2冊の本を読みながら鋭意勉強中なので、このページは随時更新していく。

詳解 Swift

詳解 Swift

*1:Objective-Cでも構わないだろうが、これから始める人はおそらくSwiftを選択するだろう

*2:詳細な説明は書籍に任せる