V语言 可变接收器及纯函数(Mutable receivers & pure functions)
struct User { is_registered bool } fn (u mut User) register() { u.is_registered = true } fn main() { mut user := User{} println(user.is_registered) // ==> "false" user.register() // TODO: Maybe force marking methods that modify the receiver with `!` // user.register()! println(user.is_registered) // ==> "true" }
请注意,功能只能修改接收器。fn register(u mut User)
这样的做法无法通过编译。
这点非常重要,所以再次申明:V语言中函数是部分纯的,它们的参数永远不会被函数修改。
修改对象的另一种方法是返回修改后的版本(*待实现):
// TODO: this syntax is not implemented yet fn register(u User) User { return { u | is_registered: true } } user = register(user)