簡體   English   中英

在 Swift 或任何其他自定義 integer 或浮動自定義類型中實現 UInt15

[英]Implementing UInt15 in Swift or any other custom integer or float custom type

有沒有一種簡單的方法來實現一個數字類型(整數或浮點數),該類型受限於您可以分配給它的值。 我的最終目標是擁有一個UInt15類型,它是介於032767之間的 integer 和其他類似類型。

例如,我可以執行以下操作:

    typealias HumanAge = Int

通過這種方式,我確保年齡始終為 integer。

如果我做:

    typealias HumanAge = UInt8

不錯,現在它被限制為0255之間的無符號 integer 。

但是人類活不了那么久,那么我將如何實現一個無符號Int並且限制在0100之間的HumanAge類型,或者例如限制在1319之間的無符號IntTeenAge類型?

對於您的問題來說,這可能是一個矯枉過正的問題,但我想屬性包裝器應該能夠在這里為您提供幫助


@propertyWrapper struct AgeRestrictedInt {
    var range = 0 ... 100
    var wrappedValue: Int? = nil {
        didSet { if let unwrappedValue = wrappedValue {
            if range ~= unwrappedValue {
                return
            }
            else {
                wrappedValue = nil
            }
        }
        }
    }
}

您現在可以將您的年齡聲明為

@AgeRestrictedInt var normalHumanAge: Int?
@AgeRestrictedInt(range: 13 ... 19) var teenAge: Int?

現在如果你給這些變量賦值

        self.normalHumanAge = 1
        debugPrint(self.normalHumanAge) // optional (1)
        self.normalHumanAge = 500
        debugPrint(self.normalHumanAge) // nil

相似地

        self.teenAge = 14
        debugPrint(self.teenAge) //optional (14)
        self.teenAge = 30
        debugPrint(self.teenAge) // nil

您可以為每個變量指定自定義范圍值,也可以決定如果分配的值超出指定范圍時的默認值(例如這里將其設置為nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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