[英]Problems with Swift Declaration
我只是問自己為什么我不能直接在Swift的Class聲明中做這樣的事情:
let width = 200.0
let height = 30.0
let widthheight = width-height
我不能用2個其他常量創建常量。 如果我在函數/方法中使用它一切正常。
謝謝
當你寫下let widthheight = width - height
,這隱含意味着let widthheight = self.width - self.height
let widthheight = width - height
let widthheight = self.width - self.height
。 在Swift中,只有在所有成員都被初始化之后才允許使用self
- 這里包括widthheight
。
但是,在init
方法中你有一點靈活性,你可以在這里寫下這樣的東西:
class Rect {
let width = 200.0
let height = 30.0
let widthheight: Double
let widthheightInverse: Double
init() {
// widthheightInverse = 1.0 / widthheight // widthheight not usable yet
widthheight = width - height
widthheightInverse = 1.0 / widthheight // works
}
}
這是計算屬性的候選者:
class Foo {
let width = 200.0
let height = 30.0
var widthheight : Double { return width - height }
}
您可能會提出一個問題'但它每次計算'; 也許你的應用程序將依賴於重復進行的單個減法 - 但不太可能。 如果減法是個問題,請在init()
設置widthheight
對於類似的東西,你可以使用類變量。 代碼如下所示:
class var width = 200.0
class var height = 30.0
class var widthheight = width - height
但是當你嘗試它時,你會看到編譯器錯誤:
尚不支持類變量
我猜他們還沒有實現這個功能。 但是現在有一個解決方案。 只需將聲明移到類聲明之外,如下所示:
let width = 200.0
let height = 30.0
let widthheight = width - height
class YourClass { ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.