gpt4 book ai didi

swift - 结构体传递 self 导致 : self subtype of @lvaue error

转载 作者:行者123 更新时间:2023-11-30 10:23:27 25 4
gpt4 key购买 nike

我描述情况的最好方法就是举一个例子:

struct One {
func setup(inout t:Two) {
// inout is important to not copy the struct in
}
}

struct Two {
func getOne() -> One {
var o = One()
o.setup(&self) // Two is not subtype of '@lvalue $T5'
return o
}
}

为什么会发生这种情况?我该如何克服它?

最佳答案

您需要向该方法添加mutating关键字。否则,struct 中的方法默认为不可变的,这意味着您不能修改方法中的 self 。并将 self 传递给另一个方法,该方法采用 inout 关键字隐式表示您要修改它。

struct Two {
mutating func getOne() -> One {
var o = One()
o.setup(&self) // Two is not subtype of '@lvalue $T5'
return o
}
}

关于swift - 结构体传递 self 导致 : self subtype of @lvaue error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24129694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com