スポンサーリンク

【Swift】文法 ポケットリファレンス サンプル付き

詳しい文法の説明ではなく、
文法を思い出すポケットリファレンス的にご利用ください。

コメントアウト

// Comment
/* Comment */

変数宣言

定数

let

変数

var

アクセス修飾子(Access Control)

public

全てのモジュールからアクセスできます。
外部プロジェクトからもアクセスが可能です。
外部ライブラリとして外部からアクセスが必要時に設定します。

internal

同じモジュール(プロジェクト内)なら全てのモジュールからアクセスが可能になります。
アクセス修飾子を省略すると、internal になります。

private

同じファイル内からのみ、アクセスが可能です。
外部からのアクセスが必要でない限りこちらで設定します。

変数での例

// Public
public let int : Int = 23

// Internal
internal let int3 : Int = 23
let int2 : Int = 23

// Private
private let int4 : Int = 23

関数での例

// Public
public class publicClass {}

// Internal
internal class internalClass {}
class internalClass2 {}

// Private
private class privateClass {}

クラスでの例

// Public
public func publicFunc() {}

// Internal
internal func internalFunc() {}
func internalFunc2() {}

// Private
private func privateFunc() {}

文字型

String

let name = "太郎"
var name : String = "次郎"

Character

var name : Character = "次"

数値型

Int

let age = 23
var age2 : Int = 19

// 二進数
let binary : Int  = 0b10101010111
// 八進数
let octal : Int  = 0o254
// 十六進数
let hexadecimal : Int  = 0x05abc

Int の種類とサイズ

■ Int8
8ビット
-128 〜 127

■ Int16
-32,768 〜 32,767

■ Int
32ビットOSの場合は Int32 64ビットは Int64

■ Int32
32ビット
-2,147,483,648 〜 2,147,483,647

■ Int64
64ビット
-9,223,372,036,854,775,808 〜 9,223,372,036,854,775,807

■ UInt8
8ビット
0 〜 255

■ UInt16
16ビット
0 〜 65,535

■ UInt
32ビットOSの場合は UInt32 64ビットは UInt64
-2,147,483,648 〜 2,147,483,647

■ UInt32
32ビット
0 〜 4,294,967,295

■ UInt64
64ビット
0 〜 18,446,744,073,709,551,615

Double

64ビット浮動小数点

var speed = 19.4334534534
var speed : Double = 19.4334534534

Float

32ビット浮動小数点

var speed = 0.23445556
var speed : Float = 0.23445556

Bool

ブーリアン型(真偽型)

let manager = true
var manager2 : Bool = true

Optional

nil を扱う事のできる変数を宣言できる

var pvCount : Int? = 20
pvCount = nil

var pcName: String?
pcName = nil

var pvCount : Int! = 20
pvCount = nil

var pcName: String!
pcName = nil

var testString2: String? = nil
var testString2: String? = "あいうえお"
if testString2 != nil {
    print("String is \(testString2!)")
}

var testString3: String? = "あいうえお"
if let number = testString3 {
    print("String is \(testString3)")
}

var testString4: String? = "あいうえお"
if testString4?.hasPrefix("あいう") ?? false {
    print("No あいう")
}

let possibleString: String? = "An optional string."
let forcedString: String = possibleString!

let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString

var emptyString = ""
if emptyString.isEmpty {
    print("empty")
}

nil 結合演算子
var optionalInt: Int?

let someValue: Int
if optionalInt != nil {
    someValue = optionalInt!
} else {
    someValue = 0
}

let someValue = optionalInt ?? 0

If 文

Int

let ifInt = 10
if ifInt < = 10 {
    print("1 - 10 です。")
}else if ifInt <= 100 {
    print("11 - 100 です。")
}else if ifInt == 200 {
    print("200 です。")
}else{
    print("else 以外です。")
}

String

let ifString = "String"
if ifString == "String" {
    print("String です。")
}else{
    print("String ではないです。")
}

Bool

let ifBool = true
if ifBool {
    print("true です。")
}

let ifBoolFirst = true
let ifBoolSecond = false
if ifBoolFirst && ifBoolSecond {
    print("OK!")
}

let ifBoolFirst = false
let ifBoolSecond = true
if ifBoolFirst || ifBoolSecond {
    print("OK!")
}

三項条件演算子

let someValue = anyBoolean ? 1 : 0

For 文

For

for var i = 0; i < 3; ++i {
    print(i)
}

For-In

// i が 0,1,2 だったら
for i in 0..<3 {
    print(i)
}

// i が 0,1,2 で、i を 2 で割った余りが 0 だったら
for i in 0..<3 where i % 2 == 0 {
    print(i)
}

let numbers: [Int?] = [0, nil, 3, 4, nil]
// ? で制御しているので、nil の場合は実行しない。
for case let i? in numbers {
    print(i)
}

While 文

var i = 0
while i < 3 {
    print(i)
    ++i
}

Repeat-While 文

var i = 0
repeat {
    print(i)
    ++i
} while i < 3

Switch 文

// 数値型
var number = 10
switch number {
case 10:
    print("10")
    
case 20:
    print("20")
    
default:
    print("他")
}

// 文字型
var vehicle = "bike"
switch vehicle {
case "bike":
    print("バイク")
    
case "car":
    print("車")
    
default:
    print("その他の乗り物")
}

// 範囲で指定する場合
let number: UInt = 42
switch number {
case 0..<10:
    print("0-9")
case 10..<100:
    print("10-100")
case 100..<1000:
    print("100-1000")
default:
    print("default")
}

Do スコープ

Do スコープを利用すると、変数のスコープの範囲を指定できます。

do {
    let name = "John"
    print("Hello \(name)")
}

let name = "Taylor"
print("Hello again \(name)")

Tuple

let human = ("太郎", 21)
let (name, age) = human
print(human.0)
print(human.1)

let human = (name: "太郎", age: 21)
print(human.age)

Array

let seasons = ["春", "夏", "秋", "冬"]
print(seasons[0])

for season in seasons {
    print(season)
}

var seasons: [String] = []
seasons.append("春")
seasons.append("夏")

let seasons = ["春", "夏", "秋", "冬"]
let count = seasons.count
for i in 0..

Set

let seasons: Set = ["春", "夏", "秋", "冬"]
if seasons.contains("春") {
    print("Yes")
}

for season in seasons {
    print(season)
}

Dictionary

let seasons = [
    "春" : 1,
    "夏" : 2,
    "秋" : 3,
    "冬" : 4,
]

if let season = seasons["春"] {
    print(season)
}

for (season, number) in seasons {
    print(season)
    print(number)
}

クラス

スタティッククラス、スタティック変数、混在

public class Test {
    // スタティック変数
    public static var nickName : String = "たろ"
    
    // インスタンス変数
    var name : String = "太郎"
    var age : Int = 0
    
    // イニシャライザ、引数なし
    init(){
        self.name = "匿名"
        age = 0
    }
    
    // イニシャライザ、無名呼び出し可能
    init(_ name: String) {
        self.name = name
    }
    
    // イニシャライザ、引数2つ
    init(name: String , age : Int) {
        self.name = name
        self.age = age
    }
    
    // 関数、引数なし、戻り値あり
    func sayNameAndAge() -> String? {
        return self.name + " " + String(self.age) + " 歳 です。"
    }
    
    // スタティック関数、引数なし、戻り値なし
    static func sayNickName(){
        print(nickName)
    }
}

継承

class ViewController : UIViewController {
    // メソッドのオーバーライド
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

プロトコル

// プロトコルのみを実装
class ViewController : UITableViewDelegate, UITableViewDataSource {
    // プロトコル実装は省略してます。
}

継承とプロトコル

// 継承する場合は、一番左で宣言、その後にプロトコル。
class ViewController : UIViewController , UITableViewDelegate, UITableViewDataSource {
    // プロトコル実装は省略してます。
}
おすすめの本

 

タイトルとURLをコピーしました