キノコが何か作るブログ

ゲーム・ドット絵・アプリなどを作ります

MENU

【swift】Structの使い方【備忘録】

Struct(構造体)とは

構造体とは、簡単に言うと複数の値を一つにまとめたものです。

特徴としては次のようなものが挙げられます。

  • 参照することができない
  • 値渡しである
  • イニシャライザ・関数も使用可能

基本の形

//定義
struct Sample {
    let name: String
    let id: Int
    
    init(name: String, id: Int) {
        self.name = name
        self.id = id
    }
    
    func printID() {
        print(id)
    }
}
//使ってみる
let test = Sample(name: "高橋", id: 22089)
test.printID()//22089と表示される

インスタンス化時にletとvarの宣言での影響を受ける

構造体の中で定義していたnameとidをvarで宣言しなおして、
構造体を使うときの宣言をvarとletにして比べてみます。

//定義
struct Sample {
    var name: String
    var id: Int
    
    init(name: String, id: Int) {
        self.name = name
        self.id = id
    }
    
    func printID() {
        print(id)
    }
}
//使ってみる
var test1 = Sample(name: "トーマス", id: 4000)
test1.id = 30001
test1.printID()//30001と表示される

let test2 = Sample(name: "高橋", id: 5000)
test2.id = 100000
test2.printID()//エラーになる

構造体の中身がvarで宣言されていても、インスタンス時にletで宣言してしまうと、値を更新できなくなります。

関数を使って構造体の値を変更する際の注意点

mutatingをfuncの前につけないと変更を受け付けないので注意が必要です。

//定義
struct Sample {
    var num: Int
    
    init(n: Int) {
        self.num = n
    }
    /*
    func plus1() {
        num += 1
        print(num)
    }
    */
    mutating func plus2() {
        num += 2
        print(num)
    }
}

var test1 = Sample(n: 1)
test1.plus1()//エラー
test1.plus2()//動く
プライバシーポリシー