在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
。它可以是:

  • 只有自然数
  • Ints
    从2到200
假设有效值的数量太大,无法使用显式声明所有有效值的
Enum

有没有一种方法可以声明在Swift中指定闭合范围的类型


我试着使用
范围
,但它没有按预期工作。

我能想到的最好办法是在结构中使用强制条件的初始值设定项包装
Int

struct NameMe {
    let value: Int

    init?(_ value: Int) {
        guard 2...200 ~= value else { return nil }
        self.value = value
    }
}

虽然单独使用
Int
需要在每个需要此类值的位置进行运行时条件检查,但这种技术仅限于首先创建此类值的位置。创建后,您可以传递
NameMe
实例,知道它们的值满足先决条件。

您可以使用存储属性存储实际值,使用计算属性获取值并将其设置为存储属性。因此,在计算属性中的集合中进行一些验证。这样你就可以限制这个值