如何在Swift类中声明但不初始化属性

时间:2016-03-18 03:11:14

标签: swift

class car {
    var oneWheel : Wheel
    func run(inputWheel:Wheel){
        oneWheel = inputWheel
        ....
    }
}

我不想实现init(),我不想初始化轮子。

2 个答案:

答案 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
  }
}