最終更新日: 2026-07-26
TOP(About this memo)) > 一覧(Swift) > 型(struct・class・enum)
=== と !== で同じインスタンスかどうかを調べることができる。=== は、クラス型の変数が同じインスタンスを参照していることを意味する。== は、2つのインスタンスが等しい、または値が同等であることを意味する。let myString = String.init("Hello, World!")
普通は省略形として下記のように書く。
let myString = String("Hello, World!")
型が決まっている場合は.initで省略表記可能。
let a: String = .init("aaaaa")
private func isActiveDestination(_ number: Int) -> Binding<Bool> {
.init(
get: { selectedNumber == number },
set: { selectedNumber = $0 ? number : nil }
)
/*
上記は下記のようにも書ける。
return Binding(
get: { selectedNumber == number },
set: { selectedNumber = $0 ? number : nil }
)
*/
}
struct 構造体名: プロトコル {
let name: String // ストアドプロパティ(stored property)
var age: Int { // コンピューテッドプロパティ(computed property)
return 20 // Swift 5.1からは式がひとつならreturnを省略可。
}
init(name: String) {
self.name = name // ageの初期化は不要
}
func メソッド() -> 戻り値の型 {
return 戻り値
}
}
struct Character {
var hitPoint: Int = 100
func damage() { // mutating func damage とする必要がある(なお、SwiftUIなら @State var hitPoint: Int = 100 とするやり方でもOK)
hitPoint -= 30 // error: Left side of mutating operator isn't mutable: 'self' is immutable
}
}
var triangle: Int {
// 〜〜
set(t) {
base = t * 2
height = t * 2
}
// 以下を使える。
// set {
// base = newValue * 2
// height = newValue * 2
// }
// 〜〜
}
let myPet = Animal.dog
は以下のように書ける
var myPet: Animal
myPet = .dog
init?(rawValue: String) {
switch rawValue {
case 〜:
self = .〜
case 〜:
self = .〜
default:
return nil
}
}
let myPet = Animal.Dog.chihuahua