0
0

構造体(Struct)について死ぬほど簡単にまとめてみた #1

Last updated at Posted at 2022-10-14

はじめに

どの記事・参考書よりも短く簡潔に触れていこうと思うので、めっちゃ詳しく勉強したい人はこの記事全く参考になりません。

構造体とは

構造体とは設計図であり、インスタンス化(PCのメモリに突っ込む)をして初めて使用することができる。また、インスタンス化とは実体化ともいう。
上記を踏まえて、超大まかに要点だけ絞っていうと二つにまとめることができる。

  1. プロパティ(変数や定数)、メソッド(関数)、イニシャライザ(初期化関数)をひとまとめにしたもの
  2. 入力(引数)、出力(戻り値)の役割を担うもの

詳細

・ インスタンス化をしてみよう
インスタンス化のやり方は主に2種類ある。
(1)構造体名()
(2)変数 or 定数 = 構造体名() ←変数は構造体のインスタンスという

Swift
struct Apple {
    let kind = "ふじ"
    var size = "S"
}

//インスタンス化1
Apple().kind //ふじ
Apple().size //S

//インスタンス化2
var apple = Apple()
print(apple.kind) //ふじ
print(apple.size) //S
apple.size = "L" // 書き換えも可能である
}
  • イニシャライザを使って初期値を決めてみよう
    Swiftでは原則プロパティの初期値は決まっていなければならず、それを解決させましょうみたいなのがイニシャライザ。また、インスタンス化時に実行される特殊なメソッド。
Swift
struct Students {
    //構造体のプロパティにおいては初期値がなくても良い
    var name: String
    var age: Int
    var from: String

    init(n: String, a: Int, f: String){
        self.name = n
        self.age = a
        self.from = f
    }
}

//インスタンス化時に初期値を決める
var students = Students(n: "太郎", a: 10, f: "東京")
print(students.name, students.age, students.from) //太郎, 10, 東京

//おまけ
//メンバワイズイニシャライザー(initを使わなかった場合のデフォルトで備わっているイニシャライザ)
var students1 = Students(name: "小太郎", age: 5, from: "神奈川")
print(students.name, students.age, students.from) //小太郎, 5, 神奈川

・メソッドを使ってみよう

Swift
struct Algebra {
    var a: Float
    var b: Float
    
    //メソッド
    //和
    func sum() -> Float {
        return a + b
    }
    
    //差
    func diff() -> Float {
        return a - b
    }
    
    //積
    func times() -> Float {
        return a * b
    }
    
    //商
    func div() -> Float {
        return a / b
    }
}

//インスタンス化
let algebra = Algebra(a: 1.0, b: 2.0)
algebra.sum() //以下、各々値が出る
algebra.div()
algebra.times()
algebra.diff()

おわりに

まとめるの疲れました。

開発環境

  • Xcode-13.4.1
  • iOS13以降
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0