Domain (クラス)
public abstract Domain
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.DATA-ACCESS.BASE.
直接継承しているサブクラス: StandardDomain-of, EnumDomain-of, BasicAutoIncrementDomain, TransientAnyDomain

値のセットと、これらを検証、比較、文字列への/からの変換を制御するプロシージャを記述します。

説明

暗黙的なファクトリーを使い、Type から多様な標準ドメインを自動的に作成することができます。

コンストラクタ
from-type:標準データ型の 1 つから自動的に Domain を生成します。
ファクトリ public implicit {Domain.from-type type:Type}:Domain

プロパティ
allowable-values:この Domain で使用可能な値。
アクセサ public Domain.allowable-values:#{Iterator-of any}
default-value:この Domain の既定値。
アクセサ public abstract Domain.default-value:any
max-allowable:この Domain で表現できる最大値。
アクセサ public Domain.max-allowable:any
min-allowable:この Domain で表現できる最小値。
アクセサ public Domain.min-allowable:any
type:この Domain で示される値に該当する Type
アクセサ public abstract Domain.type:Type

メソッド
compare:この Domain で表される値を比較します。
public abstract {Domain.compare a:any, b:any}:int
convert:このドメインに対して適切なタイプに値を変換します。
public {Domain.convert val:any}:any
format:この Domain で表される値を String としてフォーマットします。
public {Domain.format x:any}:String
hash:この Domain 内の値のハッシュ値を生成します。
public {Domain.hash x:any}:int
parse:String をこの Domain に適切な型の値に変換します。
public {Domain.parse x:String}:any
validate:この値が、この Domain のメンバであるかどうか検証します。
public {Domain.validate x:any}:#ValidationException
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
from-type (ファクトリ)
public implicit {Domain.from-type type:Type}:Domain

標準データ型の 1 つから自動的に Domain を生成します。

説明

標準の Domain は以下の基本 Curl データ型で定義されます。
  • char
  • String
  • int
  • int64
  • float
  • double
  • bool
  • DateTime
  • Time
  • any
さらに、このファクトリーは EnumTypeEnumDomain-of も生成します。
EnumDomain-of を除き、このファクトリーが返すドメインはシングルトンである点に注意してください。

注意事項

DateTime 型の場合はこのファクトリーにより StandardDateTimeDomain が作成され、特定の時点に関する完全な情報を処理するドメインになる点に注意してください。日付だけを処理するには、代わりに StandardDateDomain を直接作成することをお勧めします。



プロパティ詳細
allowable-values (アクセサ)
アクセサ public Domain.allowable-values:#{Iterator-of any}

この Domain で使用可能な値。

説明

このドメインで使用可能な値が列挙型でない場合、または Domain.type 型のすべての値が使用可能な場合は null になります。その他の場合は {Iterator-of any} になります。


default-value (アクセサ)
アクセサ public abstract Domain.default-value:any

この Domain の既定値。

説明

これは Domain.type 型の値か、{proc-type {RecordField, RecordSet}:any} 型のプロシージャのいずれかになります。後者の場合、新規レコードの作成時にこのプロシージャを使って値が動的に作成されます。


max-allowable (アクセサ)
アクセサ public Domain.max-allowable:any

この Domain で表現できる最大値。

説明

Domain.type で表せる最大値のほかに最大値が存在しない場合は null、その他の場合はこの Domain で有効な最大値を表す、Domain.type 型の値になります。
Domain.compare は、有効なすべてのドメイン値が Domain.max-allowable 以下であることを確認するのに使われる比較メソッドです。


min-allowable (アクセサ)
アクセサ public Domain.min-allowable:any

この Domain で表現できる最小値。

説明

Domain.type で表現できる最小値のほかに最小値が存在しない場合は null、 その他の場合はこの Domain で有効な最小値を表す、Domain.type 型の値になります。
Domain.compare は、有効なすべてのドメイン値が Domain.min-allowable 以上であることを確認するのに使われる比較メソッドです。


type (アクセサ)
アクセサ public abstract Domain.type:Type

この Domain で示される値に該当する Type






メソッド詳細
compare (メソッド)
public abstract {Domain.compare a:any, b:any}:int

この Domain で表される値を比較します。

a: この Domain に含まれる Domain.type 型の値。
b: この Domain に含まれる Domain.type 型の値。

説明

このメソッドで 2 つの値が等しいと判定された場合、これらが Domain.hash に与えられたときに生成するハッシュ値も同じになることに注意してください。

戻り値

int (-1、0 または 1) で、それぞれ ab より小さい、b と等しい、b より大きいことを表します。

オーバーライド

このメソッドをオーバーライドするサブクラスでは、上記の構造を実装するために Domain.hash をオーバーライドする必要が生じる場合があります。


convert (メソッド)
public {Domain.convert val:any}:any

このドメインに対して適切なタイプに値を変換します。

val: any。このドメインに対して適切なタイプに変換される値。

説明

valString の場合、このメソッドは、Domain.parse を呼び出します。それ以外の場合、val は、単に Domain.type にキャストされます。
変換が失敗した場合、ValidationException がスローされます。

プログラミング注意事項

このメソッドは、変換のために不明な any で呼び出してから、検証または他の使用のためにこの Domain に提示する必要があることに注意してください。


format (メソッド)
public {Domain.format x:any}:String

この Domain で表される値を String としてフォーマットします。

x: フォーマットする Domain.type 型の値。

説明

既定の実装では、ファクトリー {String x} で生成された値の String 表現が返されるだけです。


hash (メソッド)
public {Domain.hash x:any}:int

この Domain 内の値のハッシュ値を生成します。

x: この Domain に含まれる Domain.type 型の値。

説明

このメソッドは、Domain.compare によって等しいと判明した 2 つの値をこのメソッドに与えると、同じ値が返されるように定義されています。
このメソッドは、このドメインの値をキーとして使う HashTable-ofkey-hash-proc に使用するのに適しています。

オーバーライド

このメソッドの既定の実装では、グローバル value-hash プロシージャが呼び出されるだけです。
Domain.compare をオーバーライドするサブクラスでは、上記の整合性に関する構造が保持されるようにこのメソッドもオーバーライドする必要が生じる可能性があります。


parse (メソッド)
public {Domain.parse x:String}:any

String をこの Domain に適切な型の値に変換します。

x: パースされる String

説明

変換不可能な場合は ValidationException をスローすることがあります。

オーバーライド

このメソッドの既定の実装では例外がスローされるだけです。値の効果的な解析に失敗する実装で、この実装を呼び出すことができます。


validate (メソッド)
public {Domain.validate x:any}:#ValidationException

この値が、この Domain のメンバであるかどうか検証します。

x: any

説明

既定の実装では、間違った type の値、min-allowablemax-allowable で確定された範囲外の値、allowable-values のセットに含まれていない値を拒否します。

オーバーライド

この実装をオーバーライドして効率を高めることができる場合はぜひ実行してください。特に既定の実装では、同等性のテストを Domain.compare メソッドに依存して、単に allowable-values プロパティの任意の非 null 値を繰り返し処理するだけであるという点に注意してください。

戻り値

値が有効な場合は null、有効でない場合は失敗を表す ValidationException になります。この例外はスローされるのではなく返されるだけである点に注意してください。この戻り値を throw するかどうかは呼び出し元のコードによって決まります。