gpt4 book ai didi

swift - 为什么 CustomStringConvertible 协议(protocol)描述被多次调用?

转载 作者:搜寻专家 更新时间:2023-11-01 06:33:18 26 4
gpt4 key购买 nike

我在 iOS playground 中写了一个结构体,想自定义它的打印格式。

struct Point {
let x: Int, y: Int
}

extension Point: CustomStringConvertible {
var description: String {
switch (x, y) {
case let (x, 1..<10):
print("y in the range")
return "(\(x), 1..<10)"
default:
return "(\(x), \(y))"
}
}
}

let p = Point(x: 1, y: 1)
print(p)

结果是

enter image description here

我无法理解即使我只调用了一次 printy in the range 消息被打印了 4 次。

最佳答案

如果您使用的是 playground,则可能会多次计算一个值的描述,因为它会显示在多个地方(例如右侧)。

如果您在更受控的环境中执行代码(例如在编译代码中或在终端中的 REPL 中),您会注意到 y in the range 只会打印一次。

此外,您还应该避免计算属性中的副作用(如 print 语句)。

关于swift - 为什么 CustomStringConvertible 协议(protocol)描述被多次调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760925/

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