我正在使用Swift iBook進行Apple的應用程序開發,直到結構章節,特別是在屬性觀察部分期間,它一直非常流暢地航行。我負責檢查單位轉換。無法爲不帶參數的Height類型調用初始值設定項
struct Height {
var heightInInches: Double {
willSet(imperialConversion) {
print ("Converting to \(imperialConversion)")
}
didSet {
if (heightInInches == (heightInCentimeters * 0.393701)) {
print ("Height is \(heightInInches)")
}
}
}
var heightInCentimeters: Double {
willSet(metricConversion) {
print ("Converting to \(metricConversion)")
}
didSet {
if (heightInCentimeters == (heightInInches * 2.54)) {
print ("Height is \(heightInCentimeters)")
}
}
}
init(heightInInches: Double) {
self.heightInInches = heightInInches
self.heightInCentimeters = heightInInches*2.54
}
init(heightInCentimeters: Double) {
self.heightInCentimeters = heightInCentimeters
self.heightInInches = heightInCentimeters/2.54
}
}
let newHeight = Height()
newHeight.heightInInches = 12
從書和Swift文檔,我認爲這應該工作。但是,我收到一條錯誤消息:
「無法爲不帶參數的'Height'類型調用初始值設定項。
- 這是什麼意思,什麼我誤解?
- 我該如何解決這個問題?在底部
@Shades是正確的。在這種情況下,你可以認爲'Height'的行爲就像'Class'一樣。既然你已經定義了兩個入口 - init(heightInIches:)和init(heightInCentimeters:) - ,你不能像這樣「實例化」newHeight。 (我還補充說,你可以使用* *,但你的第二行代碼表明你想要第一個初始化。 – dfd