簡體   English   中英

快速宣言的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM