class car {
var oneWheel : Wheel
func run(inputWheel:Wheel){
oneWheel = inputWheel
....
}
}
我不想实现init(),我不想初始化轮子。
答案 0 :(得分:4)
像这样...
class car {
var oneWheel : Wheel?
// with this version, in order to pass oneWheel into this function as an argument, you will need to unwrap the optional value first. (see below example)
func run(inputWheel:Wheel){
oneWheel = inputWheel
....
}
}
或者如果您希望函数将可选类型Wheel
作为参数执行
class car {
var oneWheel : Wheel?
func run(inputWheel:Wheel?){
//use conditional binding to safely unwrap the optional
if let wheel = inputWheel {
oneWheel = wheel
}
....
}
}
通过使用条件绑定,而不是隐式展开的可选项,可以避免由于... unexpectedly found nil while unwrapping an optional value
而导致崩溃的可能性,这种情况发生在编译器发现nil且预期值为非零值时。
答案 1 :(得分:4)
创建隐式展开的可选 - 这将像普通变量一样,但不需要初始化 - 其初始值为nil
。只需确保在使用之前设置该值,否则在解开nil时会出现致命错误。
class car {
var oneWheel: Wheel!
func run(inputWheel: Wheel) {
wheel = inputWheel
}
}