日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Jess 7.2p2——Java平台规则引擎官方文档翻译2

發布時間:2024/3/7 java 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jess 7.2p2——Java平台规则引擎官方文档翻译2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Jess 7.2p2——Java平臺規則引擎官方文檔翻譯2

本博客是本人接著[本體小本營][1]之前關于Jess的官方文檔的補充翻譯,前一部分請看轉載的Jess 7.2p2——Java平臺規則引擎官方文檔翻譯1。因為對JESS理解有限,如有失誤,敬請留言。

4.定義函數

4.1.Deffunctions

你能定義自己的函數,用deffunction結構,deffunction的結構如下所示:

(deffunction <function-name> [<doc-comment>] (<parameter>*)<expr>* [<return-specifier>])

必須是符號。每個必須是變量名??蛇x的是一個雙引號字符串,可以描述函數的用途??赡苡腥我鈹盗勘磉_式。可選的給出的函數的返回值。它可以是返回函數的顯式使用,也可以是任意值或表達式。在deffunctions的控制流是通過控制流函數如foreach實現的,如果,雖然。以下例子是deffunction實現返回它的兩個數值中較大的一個:

Jess> (deffunction max (?a ?b)(if (> ?a ?b) then(return ?a)else(return ?b))) TRUE

注意以上函數也可以同時寫成如下形式:

Jess> (deffunction max (?a ?b)(if (> ?a ?b) then?aelse?b)) TRUE

這個功能現在可以被任何一個Jess函數調用來使用。例如:

Jess> (printout t "The greater of 3 and 5 is " (max 3 5) "." crlf) The greater of 3 and 5 is 5.

通常一個deffunction包含特定的參數數目。寫一個deffunction,其中包含任意數量的參數,使最后的形式參數是一個多變量的前綴——“$”字符。當deffunction被調用,多變量將包含所有剩余的參數作為一個列表傳遞給函數。一個deffunction可以接受不超過一個通配符,通配符必須在函數的最后一個參數。

您還可以用java編寫的函數自定義Jess語言。這些與內置函數沒有什么區別,事實上,您使用定義內置函數的統一口來編寫它們。詳情見這里。

4.2. Defadvice

有時一個Jess函數不會表現得完全像你希望的那樣。defadvice結構讓你寫一些Jess代碼,這些代碼將在每一次Jess函數被調用的之前或者之后運行。defadvice可以讓你輕松地“包裝”額外的代碼在任何Jess的功能,例如它執行在(因此可以改變被真正的函數看到的參數列表,或者通過返回其自身價值來達到其完全的短路)之前或執行在真正的函數之后(因此可以看到真正的函數的返回值并可能改變它。)defadvice 提供了一個好的方式對于那些Jess附件內容作者,它擴展了Jess而不需要改變任何內部代碼。
這是一些例子展示了defadvice如何使用。
這個攔截調用’plus’ (+) 并且增加了另外的參數 ‘1’, 因此 (+ 2 2) 變成了 (+ 2 2 1) -> 5. 變量 ‘$?argv’ 是特殊指定的. 它通常是指真正的Jess函數被調用時將收到的參數列表。

Jess> (defadvice before + (bind $?argv (create$ $?argv 1))) TRUE Jess> (+ 2 2) 5

這個例子使得所有的加法等于1(即所謂的短路)。defadvice通過返回值,使得函數每次被調用時都保持真正的函數功能。

Jess> (defadvice before + (return 1)) TRUE Jess> (+ 2 2) 1

這個例子從+函數的返回值中減去1,?retval是另一個有意思的變量——它是真正函數的返回值。當我們完成后,我們利用undefadvice移除advice。

Jess> (defadvice after + (return (- ?retval 1))) TRUE Jess> (+ 2 2) 3 Jess> (undefadvice +) Jess> (+ 2 2) 4

總結

以上是生活随笔為你收集整理的Jess 7.2p2——Java平台规则引擎官方文档翻译2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。