gpt4 book ai didi

ios - 从协议(protocol)扩展中调用类属性

转载 作者:行者123 更新时间:2023-12-01 18:36:05 26 4
gpt4 key购买 nike

在将协议(protocol)扩展用于默认实现时,我遇到了一个问题。我定义了一个具有不同可选属性和要使用的功能的协议(protocol)。在扩展中,我实现了一个默认函数和 nil 属性。在实现中,我使用协议(protocol)中的属性和函数。

在设备上它按我的预期工作。同样在调试器上,当我在扩展实现中遇到断点时,它给了我类的属性。

有人可以帮我弄清楚为什么我没有从类中获得示例中的属性,而是从扩展中获得 nil 属性。

操场上的例子

import UIKit

protocol Collectable {

var item: String? { get }
func collect()
}

extension Collectable {
var item: String? { return nil }
func collect() {
if let some = item {
print("collect \(some)")
} else {
print("nothing")
}
}
}

class Car: Collectable {
var item = "letter"
}

let car = Car()
car.collect()

最佳答案

在协议(protocol)中,您的 item 是可选字符串,而在您的类中,您声明了另一个名为 item 的变量。您的 collect 函数正在寻找可选项目,并且在您指定它应该返回 nil 的扩展中。

关于ios - 从协议(protocol)扩展中调用类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58595164/

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