在Swift中创建绑定到特定范围的类型
假设我有一个函数,它接受在Swift中创建绑定到特定范围的类型,swift,types,swift3,Swift,Types,Swift3,假设我有一个函数,它接受Int,但不只是任何Int。它可以是: 只有自然数 Ints从2到200 等 假设有效值的数量太大,无法使用显式声明所有有效值的Enum 有没有一种方法可以声明在Swift中指定闭合范围的类型 我试着使用范围,但它没有按预期工作。我能想到的最好办法是在结构中使用强制条件的初始值设定项包装Int: struct NameMe { let value: Int init?(_ value: Int) { guard 2...200 ~=
Int
,但不只是任何Int
。它可以是:
- 只有自然数
从2到200Ints
- 等
Enum
有没有一种方法可以声明在Swift中指定闭合范围的类型
我试着使用
范围
,但它没有按预期工作。我能想到的最好办法是在结构中使用强制条件的初始值设定项包装Int
:
struct NameMe {
let value: Int
init?(_ value: Int) {
guard 2...200 ~= value else { return nil }
self.value = value
}
}
虽然单独使用
Int
需要在每个需要此类值的位置进行运行时条件检查,但这种技术仅限于首先创建此类值的位置。创建后,您可以传递NameMe
实例,知道它们的值满足先决条件。您可以使用存储属性存储实际值,使用计算属性获取值并将其设置为存储属性。因此,在计算属性中的集合中进行一些验证。这样你就可以限制这个值