gpt4 book ai didi

swift - 为什么自己没有解决?

转载 作者:行者123 更新时间:2023-11-28 08:13:55 25 4
gpt4 key购买 nike

protocol LOL {
var foo: ((_ lol: String) -> Bool)? { get set }
}

class LMAO: LOL {
internal var foo: ((String) -> Bool)? = { (_ lol: String) in
self.rofl()
return true
}

func rofl() {}
}

为什么 self 在内部 foo 变量中没有解析?

我在这里做错了什么?

最佳答案

您分配给 foo 的闭包独立于您的 LMAO 类,因此它没有“ self ”。

如果你想用当前实例自身的代码初始化你的 foo 变量,你需要使用惰性初始化。您还需要以某种方式链接到当前实例(普通闭包不会这样做)。

最简单的方法可能是向您的类添加一个 defaultFoo 函数并将其分配为初始值:

class LMAO: LOL 
{
lazy var foo: ((String) -> Bool)? = self.defaultFoo

func defaultFoo (_ lol: String) -> Bool
{
self.rofl()
return true
}

func rofl() {}
}

此时您可能不需要将 foo 设为可选项,但这取决于您。

关于swift - 为什么自己没有解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015735/

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