Swift 为什么多次调用CustomStringConvertible协议描述?

Swift 为什么多次调用CustomStringConvertible协议描述?,swift,customstringconvertible,Swift,Customstringconvertible,我已经在iOS操场上写了一个struct,希望自定义它的打印格式 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") retu

我已经在iOS操场上写了一个struct,希望自定义它的打印格式

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)
结构点{
设x:Int,y:Int
}
扩展点:CustomStringConvertible{
变量说明:字符串{
开关(x,y){

case let(x,1..如果您使用的是游乐场,则可能会多次计算值的描述,因为它将显示在多个位置(例如右侧)

如果您在更受控的环境中执行代码(如在编译代码中或在终端的REPL中),您将注意到范围
中的
y将只打印一次


此外,还应避免副作用(如打印语句)在计算属性中。

无法复制。-等等:你在操场上尝试过吗?@MartinR真的吗?因为我创建了一个新的iOS操场以进行双重确认,所以当我在右列中显示值时,控制台会打印,因此会多次调用
description
。My general(免费!)建议:如果在操场上发生了任何你不理解的事情,请在编译的项目中尝试。如果需要,请使用调试器。谢谢@MartinR