我正在学习Swift扩展,并在Playground中为Double编写了一个简单扩展。代码如下。
extension Double {
func round(to places: Int) -> Double {
let precisionNumber = pow(10, Double(places))
var n = self //self contains the value of the myDouble variable
n = n * precisionNumber
n.round()
n = n / precisionNumber
return n
}
}
var myDouble = 3.14159
myDouble.round(to: 1)
该扩展程序按计划工作,但是当我在扩展程序中任何一行代码的右列中按“显示结果”(眼睛图标)时,都会看到一条水平线。
有人知道这行应该表示什么吗?使用Xcode 11.2.1和Swift5。
答案 0 :(得分:0)
这里的问题是您还没有透露所有的游乐场。我的猜测是,还有更多代码,您可以再次在扩展名为 。也许您的真实代码看起来像这样:
extension Double {
func round(to places: Int) -> Double {
let precisionNumber = pow(10, Double(places))
var n = self //self contains the value of the myDouble variable
n = n * precisionNumber
n.round()
n = n / precisionNumber
return n
}
}
var myDouble = 3.14159
myDouble.round(to: 1) // once
print(myDouble)
myDouble = myDouble.round(to: 1) // twice; in your case it's probably another value
print(myDouble)
如果您的目的是编写和调试扩展程序,那么这是编写操场的一种非常糟糕的方法,这正是您已经说明的原因。您已经两次调用了扩展名,那么什么有意义的值可以显示为扩展名每一行的“结果”?游乐场必须尝试向您显示两个调用结果中的两个结果。它唯一想到的方法是绘制两个结果。
这是一种非常有用的表示,但是,当您故意循环循环或重复执行代码时,因为您至少可以从图中了解到每次循环时值如何变化