Swift Playground 中的 lldb_expr 是什么?

rb6*_*612 7 oop xcode ios swift 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()
Run Code Online (Sandbox Code Playgroud)

为什么我会排{__lldb_expr_380.Animal feet 4}在最后一行?当我在动物类下创建实例变量时,它就会消失。

don*_*als 3

我并不是百分百认同这一点,但对我来说,这似乎是理智且合乎逻辑的。

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

因此,根据我的理解,每当你有这个空的超类时,编译器都会感到“困惑”,并且发生的错误是它只会打印出来__llb_expr_:some_number:.ClassName而不是类似{}.

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