【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: String
str = 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
! NOT Trueであれば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..<10
print("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> = nil

let 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) = items
print(product)
print(amount)

値の破棄

let (product, _) = items
print(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が有るか bool
winners.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 + b
print(a.intersection(b)) //積集合 aとbの共通
print(a.subtracting(b)) //差集合 a - b

 

辞書

var points: Dictionary<String, Int> = ["tanaka" : 100, "satoh" : 200]
points["satoh"] = 300
print(points["tanaka"] ?? "NA")
points["suzuki"] = 500
print(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 += 100
print(x)
}

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

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

 

クラス

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

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

 

イニシャライザ

class User {
let name: String
var point: Int
init(name: String, point: Int) {
self.name = name
self.point = point
}
}
let suzuki  = User(name: "suzuki", point: 300)

引数の省略

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

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

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

計算プロパティ

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

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

随時追記

Twitterが本体です
広告