2017-03-03 4 views
2

Intという関数を持っていますが、Intだけではありません。それは次のようになります。Swiftで特定の範囲にバインドされた型を作成する

  • だけ自然数の2から200
  • から
  • Intsなど

は、有効な値の数が、その明示的Enumを利用するには大きすぎると仮定それらのすべてを実現可能なアプローチと宣言します。

Swiftで閉じた範囲を指定する型を宣言する方法はありますか?

Rangeで試してみましたが、期待通りに動作しません。

答えて

1

は、私は考えることができる最高はあなたの状態を強制初期化と構造体にIntをラップすることです:

struct NameMe { 
    let value: Int 

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

すべての場所値の実行時の状態のチェックを必要とするだけではIntを使用してのに対しそのような種類のものが必要とされていた場合、この手法では、最初にそのような値が作成された場所だけに制限されます。作成したら、その値が前提条件を満たしていることを知り、NameMeのインスタンスを渡すことができます。

0

あなたは、実際の値を格納し、保存されたプロパティに値を取得および設定するコンピュープロパティを使用する保存されたプロパティを使用することができます。したがって、に設定して検証してください。その方法で値を制限することができます

関連する問題