「rulebyインタフェース解説」の編集履歴(バックアップ)一覧はこちら

rulebyインタフェース解説」(2008/07/23 (水) 05:01:38) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

Rulebyは、ルールを定義して事実を検証するために純粋なRuby の ドメイン特化言語(DSL)をシステムへ提供します。 このインタフェースはDSLsを作成するのに適したRubyの言語機能を利用します。 次はRulebyルールの例です。 rule [m.status == :HELLO] do |v| puts v[:m].message end この例では、 プロダクションの左側(「いつ」)は Array パラメータで表されています。右側(「そのとき」)はブロックで表されています。 この規則は、:HELLO の status がオブジェクトの事実のコレクションに存在しなければならないと断言します。オブジェクトがワーキングメモリに追加されたなら、プロダクションルールの右側で指定された「動作」は発火するでしょう。 さて、このルールがどのように使われるか見てみましょう。: engine :hello_engine do |e| HelloWorldRulebook.new(e).rules assert e, Message.new(:HELLO, 'Hello World') e.match end この‘HelloWorld’ルールは HelloWorldRulebook クラスを含んでいます(これはソースコードにあります)。このクラスを使って新しいインタフェースエンジンや新しいルールセットや新しい事実を作ります。 ‘assert’ メソッドはワーキングメモリに事実を追加します。 match メソッドが呼び出されたとき、 the action in the ‘HelloWorld’ ルールのアクションは発火します。そしてシステムのコンソールに出力するでしょう。: Hello World さて、もう少し動作を追加して、ルールブックに2つ目のルールを導入しましょう。: rule [m.status == :HELLO] do |v| puts v[:m].message v[:m].message = "Goodbye world" v[:m].status = :GOODBYE modify v[:m] end rule [m.status == :GOODBYE] do |v| puts v[:m].message end match メソッドが呼ばれたときに出力されるでしょう: Hello World Goodbye 何故なら、ワーキングメモリの事実が最初のルールの動作によって変更され、‘Goodbye’ルールを満足するようになったからです。 他にも Ruleby インタフェースでできる事がたくさんあります。 詳しい情報のために[[RulebyDSL]]を読んでください。

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
人気記事ランキング
目安箱バナー