let
プロパティが書き換えられてるのって直感に反しませんか? struct Character { let name: String var hp: Int mutating func foo() { self = Character(name: "Hoge", hp: hp) } } var character = Character(name: "ゆうしゃ", hp: 153) character.foo() print(character.name) // "Hoge"
replacing func
を呼ぶ場合は &character.foo()
とか特殊な構文にしてもいいかも?