【发布时间】:2015-01-18 12:36:08
【问题描述】:
在 Swift 游乐场中考虑这段代码:
import Cocoa
class Thing: Printable {
let name: String
init() {
name = "something"
}
var description: String { return name }
}
let a = Thing()
println("hello, \(a)")
作为图片:
预期:我希望最后一行打印“hello, something”。
观察到:它打印“hello, __lldb_expr_1.Thing”,就好像我没有实现 Printable 协议一样。
代码实际上在真正的 iOS 应用程序的上下文中工作,它使用 Printable 协议按预期打印“hello, something”。
为什么这段代码没有打印出我在操场上所期望的内容?这是游乐场的限制吗?
【问题讨论】:
-
是的,这似乎是操场的限制,正如这里注意到的stackoverflow.com/a/27830622/1187415:“我发现 println 和 debugPrintln 都使用描述 if-and-only-if 类下降来自 NSObject。”
-
有趣。是的,当我从 NSObject 继承时,它在 Playground 中工作。但感觉它也应该在没有的情况下工作。我正在关注 WWDC 2014 的 Session 404 “Advanced Swift”。它没有专门讨论 Playgrounds,但它确实使用这种方法来记录不继承自 NSObject 的 Swift 对象。
-
是时候提交另一个错误报告了 :)