class Car: Vehicle {
var gear = 1
override var description: String {
return super.description + " in gear \(gear)"
}
}
↑上与↓下的表达在 Swift 中是一样的吗,有什么区别?
class Car: Vehicle {
var gear = 1
override var description: String = super.description + " in gear \(gear)"
}
码字不易,有用望采纳 答案参考Chatgpt解答
在Swift中,上述两个表达式并不等效,它们有一些区别。
第一个表达式:
class Car: Vehicle {
var gear = 1
override var description: String {
return super.description + " in gear \(gear)"
}
}
在这个表达式中,description
被声明为一个计算属性,它重写了父类Vehicle
中的description
属性。计算属性提供了自定义的getter方法,它将返回父类的description
属性值加上额外的文本。
第二个表达式:
class Car: Vehicle {
var gear = 1
override var description: String = super.description + " in gear \(gear)"
}
在这个表达式中,description
被直接赋值为一个字符串。它并不是一个计算属性,而是一个存储属性。在这种情况下,super.description
和gear
的值在赋值时就会被固定下来,而不是每次获取属性时计算。
因此,这两个表达式的区别在于description
属性的性质(计算属性 vs 存储属性),以及如何处理父类属性和自身属性的组合。具体使用哪个表达式取决于您的需求和设计意图。
A finite-state machine (FSM) or finite-state automaton (FSA, plural: automata), finite automaton, or simply a state machine, is a mathematical model of computation.
备注:分类本身是有各种分类方式的,这里采取是以是否有输出作为分类的前提,维基百科上的分类方式和此种分类不太一致,大家可以参考对比一下。