【Swift】初心者がアプリ開発する前に覚えるSwiftの基本構文まとめ

 

基本知識

大文字・小文字の区別有り

Stringはstringと記載するとエラーとなる

 

宣言

定数(let)

letで宣言

定数のため一度だけ値を代入可能

let str: String

 

変数(var)

varで宣言

変数のため何度でも値を代入可能

var str: String

 

宣言と同時に代入

「=」で続けて代入

var str:String = "hello world"

 

 

最初に覚える型

型の種類

  • Int:数値型 (例 100)
  • Double:浮動小数点 (例 1.25)
  • String:文字列 (例 Hello World)

 

型変換の方法

数値を文字列として扱う場合はString()で囲む

var str: Stringstr = S tring(3)

 

演算

演算子

演算子内容
+加算
減算
*乗算
/除算
%余り

 

自分自身との演算の省略形

x += y
x = x + 5
x += 5

 

文字列の操作

文字列の結合

「+」で結合する

str1 + str2

 

ダブルクォーテーション中への埋込み

バックスラッシュ括弧の中に記入

print (こんにちは、\(name)さん")
\()の中でも演算可能
print (“りんごが\(count1 + count2)個あります”)
Mac:Option + ¥

 

Bool値の操作

演算子意味解説
&&AND全てTrueの場合にTrue
||OR一つでもTrueの場合にTrue
!NOTTrueであればFalse

 

print(true && false) //false print(true || false) //true print(!ture) //false

 

条件分岐

if

演算子解説
==同じ場合にtrie
!=異なる場合にtrue
>右辺より大きい場合にtrue
>=右辺以上の場合にtrue
<右辺より小さい場合にtrue
<=右辺以下の場合にtrue

 

if judge {print(root1)}else if{print(root2)else{print(root3)}

 

条件 ? A : B
message = myPoint >= 60 ? “OK” : “NG”

 

switch

switch myPoint {case 0:print("NG")case 1, 2, 3:print("so..so..")case 4...6:print("4~6")case 7..<10print("7~9")case let n where n > 100:print("\(n)ポイント!!!")default:print("NA")}
何もしない場合はそのcase文の下に「break」を記載

 

ループ処理

while

while count < 5 {print(count)count += 1}
絶対に一度は実行したい場合に使用する
条件文が下部にあるため、条件を満たさなくとも1回は実行されるrepeat {
print(count)
count += 1
} while count < 5

 

for

for 変数 in 集合 {処理}

for i in 0...10 {print(i)}

 

break,continue

ループ操作の命令解説
breakループから出る
continue次のループを開始する

 

for i in 0...10 {if i == 5 {break}print("break test \(i)")}for i in 0...10 {if i == 5 {print("continue test \(i)")}print(i)}

 

オプショナル型

let s: Optional<String> = nillet s: String? = nil

 

オプショナル型はnilでないことを確認する必要がある

if s != nil {print(s!)}
オプショナル型から値を取り出すには変数の後ろに「!」を付ける

 

オプショナルバインディング

if let value = s {print(value)}

 

str ?? nilの処理

print(str ?? "これはnilです")

 

複数の値の整理(配列・タプル・集合・辞書)

種類特徴
配列scores: [Int] = [50, 40]順序有り
タプル順序有り
集合順序無し、重複禁止
辞書キー

 

配列

var points: [Int] = [100, 50]var points = [100, 50]print(prints[0])

points.count 要素数
points.isEmpty 空かどうか調べる

要素の追加

var fruits = [String]()fruits.append("apple")fruits += ["banana"]for str in fruits {print(str)}

 

タプル

異なる型も入れられる

var items = ("apple",100)print(items.0)print(items.1)let (product, amount) = itemsprint(product)print(amount)

値の破棄

let (product, _) = itemsprint(product)
初期化で名前を付けることも可能var items = (product: "apple", amount: 5)print(items.product)

 

集合

var winners: Set<Int> = [3,5,8,8]var winners: Set = [3,5,8,8]print(winners) //[5,3,8]print(winners.contains(3)) //3が有るか boolwinners.insert(10) //追加winners.remove(5) //削除print(winners.count)

空の集合

let s = Set<Int>()print(s.isEmpty) //true

 

let a: Set = [1,3,5,8]let b: Set = [3,5,8,9]print(a.union(b)) //和集合 a + bprint(a.intersection(b)) //積集合 aとbの共通print(a.subtracting(b)) //差集合 a - b

 

辞書

var points: Dictionary<String, Int> = ["tanaka" : 100, "satoh" : 200]points["satoh"] = 300print(points["tanaka"] ?? "NA")points["suzuki"] = 500print(points.count)for (key, value) in points {print("\(key) : \(value)")}

空の辞書の作成

let d = [String: Int]()print(d.isEmpty)

 

関数

func 関数名() {処理内容}

func hello() {print("hello")}func helloReturn() {return "hello"}print(helloReturn())

 

引数

func hello(name: String) {print("hello (name)")}print(name: "tanaka")引数と実行変数を別にする場合func hello(from name: String) {print("hello (name)")}print(from: "tanaka")

引数に変数名を付けない場合

func hello(_ name: String) {print("hello (name)")}print("tanaka")

初期値を持たせる場合

func hello(_ name: String = "satoh") {print("hello (name)")}print()

 

引数は定数となる(下記はエラー)

func add100(x: Int) {x += 100print(x)}

引数に代入したい場合はinout
実行の変数前には「&」を付ける
また、実行の変数は引数の値を受け取る

func add100(x: inout Int) {x += 100}var i = 100add100(x: &i)print(i)

 

クラス

最初の一文字は大文字
クラス内の変数や定数はプロパティーと呼ぶ
初期値はinit()を使用する

class User {let name: Stringvar point: Intinit() {self.name = "tanaka"self.point = 100}}let user1: User = User()//let user1 = User()  型推論でも可能print(user1.name)user1.point = 200

 

イニシャライザ

class User {let name: Stringvar point: Intinit(name: String, point: Int) {self.name = nameself.point = point}}let suzuki  = User(name: "suzuki", point: 300)

引数の省略

class User {let name: Stringvar point: Intinit(_ name: String, _ point: Int) {self.name = nameself.point = point}}let suzuki  = User("suzuki", 300)

initは引数が異なればいつくでも指定可能複数のinit

class User {let name: Stringvar point: Intinit(_ name: String, _ point: Int) {self.name = nameself.point = point}init() {self.name = "nanasi"self.point = 0}}let nanasi  = User()print(nanasi.name)print(nanasi.point)

計算プロパティ

プロパティに動的に値を取得

class User {let name: Stringvar point: Intvar level: Int {get {return Int(point / 10)}set{if newValue >= 0 {point = newValue * 10}}}init(_ name: String, _ point: Int) {self.name = nameself.point = point}let satoh = User("satoh", 50)print(satoh.level)satoh.level = 5print(satoh.point)satoh.level = -10print(satoh.point)

随時追記

>waka

waka

坊主のバイトをしていたらギターが壊れたのでITコンサルに就職しました。
デザイン変更中。消すとこの機能があることを忘れちゃうのでとりあえず文章書いとくけどあとで変える!

CTR IMG