假设我有一个枚举,例如:

enum AnimalType {
    case Dog
    case Cat

    func barks() -> Bool {
        switch self {
        case Dog:
            return true
        case Cat:
            return false
        }
    }
}

如果我要执行以下操作:
func pickAnimal(shouldBark: Bool) {

    switch shouldBark {

    case AnimalType.Dog.barks():
        println("you should pick dogs")

    case AnimalType.Cat.barks():
        println("you should pick cats")

    default:
        println("don't pick cats or dogs")
    }
}

调用AnimalType.Dog.barks()AnimalType.Cat.barks()会实例化AnimalType吗?

最佳答案

是的,在这些示例中,AnimalType.Dog.barks()实例化了AnimalType

毕竟,barks()是一个实例方法。除实例外,不能调用它。

实例的生命周期将非常短。足够长的时间来调用barks()方法,仅此而已。

10-08 15:58