0
(deftemplate Employee
(slot employee-id)
(slot employee-name)
(slot Role)
(slot Designation))
(deffacts Employees
(employee (employee-name X) (employee-id 1) (Role CS) (Designation TA))
(employee (employee-name Y) (employee-id 2) (Role CS) (Designation SA))
(employee (employee-name Z) (employee-id 3) (Role CIS) (Designation TA))
(employee (employee-name W) (employee-id 4) (Role SE) (Designation SA))
(employee (employee-name Q) (employee-id 5) (Role CIS) (Designation TA))
(employee (employee-name U) (employee-id 1) (Role CS) (Designation TA)))
上記の例では、従業員IDを2回入力しました。従業員IDを一意にするにはどうすればよいですか?CLIPS内のスロットに一意の値のみを許可する方法はありますか
ここで自動的にシーケンスが生成されます。既存の従業員IDを使用してファクトを入力するべきではありません。 –
重複IDを持つ従業員を削除するルールを作成するか、ファクトクエリー関数を使用して、一意の値を見つけるまで従業員がidとincrement?* id *を持つかどうかを判別するか、gensym *を使用して一意のIDを生成するか、 Cに呼び出してUUIDを生成するユーザー定義関数を作成します。 –
これは意味があります。ありがとう.. !! –