🔍 例:var id: String { name } の意味
var id: String { name }は、実際には次の省略形です:
|
1 2 3 |
var id: String { return name } |
つまり、id というプロパティを「name を返すだけの読み取り専用プロパティ」として定義しています。
✅ なぜこうするのか?
Identifiable プロトコルを適合させるときに 一意のIDを返すプロパティ id が必要 になります。
でも、わざわざ別で UUID を持たなくても「この構造体の name がユニークなら、それを id に使えば十分」な場合があります。
なので:
|
1 |
var id: String { name } |
として、id の値を name と同じにしているわけです。
💡 例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
struct Pancakes: Identifiable { let name: String let sales: Int var id: String { name } // ← 計算型プロパティ } let menu = [ Pancakes(name: "チョコ", sales: 120), Pancakes(name: "イチゴ", sales: 95) ] for item in menu { print(item.id) // "チョコ", "イチゴ" } |
ここでは id を宣言していませんが、呼び出すと name を返してくれるので Identifiable として使えるわけです。
🎯 ポイント
{}の中身は そのプロパティを呼ばれたときに毎回実行される処理。var id: String { name }は「idにアクセスされたらnameを返す」という計算型プロパティ。returnが1行の場合は省略できるので{ name }でOK。
つまり、{ name } は「id を呼び出したら name をそのまま返すよ」という省略記法です。

コメント