Aviator 輕量級表示式引擎
Aviator的特性
支援大部分運算操作符,包括算術操作符、關係運算符、邏輯操作符、位運算子、正則匹配操作符(=~)、三元表示式?: ,並且支援操作符的優先順序和括號強制優先順序,具體請看後面的操作符列表。
支援大整數和精度運算(2.3.0版本引入)
支援函式呼叫和自定義函式
內建支援正則表示式匹配,類似Ruby、Perl的匹配語法,並且支援類Ruby的$digit指向匹配分組。
自動型別轉換,當執行操作的時候,會自動判斷運算元型別並做相應轉換,無法轉換即拋異常。
支援傳入變數,支援類似a.b.c的巢狀變數訪問。
函式式風格的seq庫,操作集合和陣列
效能優秀
Aviator的限制:
沒有if else、do while等語句,沒有賦值語句,僅支援邏輯表示式、算術表示式、三元表示式和正則匹配。
不支援八進位制數字字面量,僅支援十進位制和十六進位制數字字面量。
這裡我使用最新的版本:
跟著demo,簡單使用下:
輸出:
兩種執行模式
預設 AviatorEvaluator 以執行速度優先: AviatorEvaluator.setOptimize(AviatorEvaluator.EVAL);
你可以修改為編譯速度優先,這樣不會做編譯優化: AviatorEvaluator.setOptimize(AviatorEvaluator.COMPILE);
資料型別
- String 型別: 字串型別,單引號或者雙引號括起來的文字串,如'hello world',變數 如果傳入的是 String 或者 Character 也將轉為 String 型別。
- Bool 型別: 常量 true 和 false,表示真值和假值,與 java 的 Boolean.TRUE 和 Boolean.False 對應。
-
Pattern 型別: 類似 Ruby、perl 的正則表示式,以//括起來的字串,如/\d+/,內部 實現為 java.util.Pattern。
-
nil 型別: 常量 nil,類似 java 中的 null,但是 nil 比較特殊,nil 不僅可以參與==、!=的比 較,也可以參與>、>=、<、<=的比較,Aviator 規定任何型別都 n 大於 nil 除了 nil 本 身,nil==nil 返回 true。
-
Number 型別:數字型別,支援四種類型,分別是 long,double,java.math.BigInteger(簡稱 big int)和 java.math.BigDecimal(簡
稱 decimal)
這裡就簡單記錄一下,具體細節使用大家可以看看文件!
參考: