(クラス)
public abstract Domain
値のセットと、これらを検証、比較、文字列への/からの変換を制御するプロシージャを記述します。
説明
暗黙的なファクトリーを使い、Type から多様な標準ドメインを自動的に作成することができます。
ファクトリ public implicit | {Domain.from-type type:Type}:Domain |
アクセサ public abstract Domain.default-value:
any
アクセサ public Domain.max-allowable:
any
アクセサ public Domain.min-allowable:
any
アクセサ public abstract Domain.type:
Type
public abstract | {Domain.compare a:any, b:any}:int |
public | {Domain.convert val:any}:any |
format: | この Domain で表される値を String としてフォーマットします。 |
hash: | この Domain 内の値のハッシュ値を生成します。 |
public | {Domain.hash x:any}:int |
parse: | String をこの Domain に適切な型の値に変換します。 |
validate: | この値が、この Domain のメンバであるかどうか検証します。 |
(ファクトリ)
public implicit | {Domain.from-type type:Type}:Domain |
標準データ型の 1 つから自動的に Domain を生成します。
説明
標準の Domain は以下の基本 Curl データ型で定義されます。
- char
- String
- int
- int64
- float
- double
- bool
- DateTime
- Time
- any
EnumDomain-of を除き、このファクトリーが返すドメインはシングルトンである点に注意してください。
注意事項
(アクセサ)
この Domain で使用可能な値。
説明
このドメインで使用可能な値が列挙型でない場合、または
Domain.type 型のすべての値が使用可能な場合は
null になります。その他の場合は
{Iterator-of any} になります。
(アクセサ)
アクセサ public abstract Domain.default-value:
any この Domain の既定値。
説明
これは
Domain.type 型の値か、
{proc-type {RecordField, RecordSet}:any} 型のプロシージャのいずれかになります。後者の場合、新規レコードの作成時にこのプロシージャを使って値が動的に作成されます。
(アクセサ)
アクセサ public Domain.max-allowable:
any この Domain で表現できる最大値。
説明
Domain.type で表せる最大値のほかに最大値が存在しない場合は
null、その他の場合はこの
Domain で有効な最大値を表す、
Domain.type 型の値になります。
Domain.compare は、有効なすべてのドメイン値が
Domain.max-allowable 以下であることを確認するのに使われる比較メソッドです。
(アクセサ)
アクセサ public Domain.min-allowable:
any この Domain で表現できる最小値。
説明
Domain.type で表現できる最小値のほかに最小値が存在しない場合は
null、 その他の場合はこの
Domain で有効な最小値を表す、
Domain.type 型の値になります。
Domain.compare は、有効なすべてのドメイン値が
Domain.min-allowable 以上であることを確認するのに使われる比較メソッドです。
(アクセサ)
アクセサ public abstract Domain.type:
Type この Domain で示される値に該当する Type。
(メソッド)
public abstract | {Domain.compare a:any, b:any}:int |
この Domain で表される値を比較します。
説明
このメソッドで 2 つの値が等しいと判定された場合、これらが
Domain.hash に与えられたときに生成するハッシュ値も同じになることに注意してください。
戻り値
int (-1、0 または 1) で、それぞれ
a が
b より小さい、b と等しい、b より大きいことを表します。
オーバーライド
このメソッドをオーバーライドするサブクラスでは、上記の構造を実装するために Domain.hash をオーバーライドする必要が生じる場合があります。
(メソッド)
public | {Domain.convert val:any}:any |
このドメインに対して適切なタイプに値を変換します。
val: any。このドメインに対して適切なタイプに変換される値。
説明
プログラミング注意事項
このメソッドは、変換のために不明な any で呼び出してから、検証または他の使用のためにこの Domain に提示する必要があることに注意してください。
(メソッド)
この Domain で表される値を String としてフォーマットします。
説明
既定の実装では、ファクトリー {String x} で生成された値の String 表現が返されるだけです。
(メソッド)
public | {Domain.hash x:any}:int |
この Domain 内の値のハッシュ値を生成します。
説明
このメソッドは、
Domain.compare によって等しいと判明した 2 つの値をこのメソッドに与えると、同じ値が返されるように定義されています。
このメソッドは、このドメインの値をキーとして使う
HashTable-of の
key-hash-proc に使用するのに適しています。
オーバーライド
このメソッドの既定の実装では、グローバル
value-hash プロシージャが呼び出されるだけです。
Domain.compare をオーバーライドするサブクラスでは、上記の整合性に関する構造が保持されるようにこのメソッドもオーバーライドする必要が生じる可能性があります。
(メソッド)
String をこの Domain に適切な型の値に変換します。
x: パースされる String。
説明
オーバーライド
このメソッドの既定の実装では例外がスローされるだけです。値の効果的な解析に失敗する実装で、この実装を呼び出すことができます。
(メソッド)
この値が、この Domain のメンバであるかどうか検証します。
x: any。
説明
オーバーライド
この実装をオーバーライドして効率を高めることができる場合はぜひ実行してください。特に既定の実装では、同等性のテストを
Domain.compare メソッドに依存して、単に
allowable-values プロパティの任意の非 null 値を繰り返し処理するだけであるという点に注意してください。
戻り値
値が有効な場合は
null、有効でない場合は失敗を表す
ValidationException になります。この例外はスローされるのではなく返されるだけである点に注意してください。この戻り値を
throw するかどうかは呼び出し元のコードによって決まります。