Swift 游乐场中的 lldb_expr 是什么?

What is lldb_expr in Swift Playground?

我试图向某人演示基本继承以及在覆盖 init 时如何始终默认调用超级初始化程序:

class Animal{
    init(){
        println("Animal has been initialized!")
    }
}

class Dog:Animal{
    var feet:Int = 4

    override init(){
        println("Dog has been initialized!")
    }
}

var d = Dog()

为什么我在最后一行得到 {__lldb_expr_380.Animal feet 4}?当我在动物 class.

下创建实例变量时它消失了

我对此不是 100% 肯定,但对我来说这似乎是理智和合乎逻辑的。

您的 Animal class 是空的,因此编译器需要一种方法来表达/打印 class / 它的值。所以它所做的是 print __lldb_expr_380.Animal 因为编译器不知道还能用它做什么。如果添加一个 属性,例如 legs,结果将变为:{{legs 2} feet 4}.

所以,根据我的理解,只要你有这个空的 superclass ,编译器就会得到 'confused' 并且发生的错误是它只会打印出 __llb_expr_:some_number:.ClassName 而不是某些东西像 {}.

参考:http://discuss.codewithchris.com/t/episode-7-classes-error---lldb-expr-/150