18.8. ファクトへの制約の追加
| 名前 | 説明 | 例 |
|---|---|---|
| LHS 条件の表現 |
DSL ファシリティーを使用すると、単純な規則によりパターンに制約を追加できます。DSL 式がハイフン(マイナス文字、-)で始まる場合は、フィールド制約であると仮定されるため、が前の最後のパターン行に追加されます。
この例では、
Cheese クラスには type、price、age、および country のフィールドがあります。通常の DRL では、一部の LHS 条件を表現できます。
|
Cheese(age < 5, price == 20, type=="stilton", country=="ch")
|
| DSL 定義 |
この例の DSL 定義では、3 つの DSL フレーズが作成され、これらのフィールドに関連する制約の組み合わせを作成できます。
|
[when]There is a Cheese with=Cheese()
[when]- age is less than {age}=age<{age}
[when]- type is '{type}'=type=='{type}'
[when]- country equal to '{country}'=country=='{country}'
|
| "-" |
パーサーは-で始まる行を取得し、これを前述のパターンに制約として追加し、必要に応じてコンマを挿入します。
| There is a Cheese with
- age is less than 42
- type is 'stilton'
Cheese(age<42, type=='stilton')
|
| DSL フレーズの定義 |
さまざまな演算子と、任意のフィールド制約を処理する汎用式の DSL フレーズを定義すると、DSL エントリーの量が減少します。
|
|
| DSL 定義ルール | 該当なし |
There is a Cheese with - age is less than 42 - rating is greater than 50 - type equals 'stilton'
この場合、is less than などのフレーズは
< に置き換えられ、行が最後の DSL エントリーと一致します。これによりハイフンが削除されますが、最終的な結果は引き続き前述のパターンに制約として追加されます。すべての行を処理した後、生成される DRL テキストは以下のようになります。
Cheese(age<42, rating > 50, type=='stilton')
|
注記
DSL 内のエントリーの順序は、個別の DSL 式が同じ行と一致することが意図されている場合(もう一方の後)に重要です。