Aviator是一個高性能、輕量級的java語言實現的表達式求值引擎,主要用於各類表達式的動態求值。html
Aviator的特性java
支持大部分運算操做符,包括算術操做符、關係運算符、邏輯操做符、位運算符、正則匹配操做符(=~)、三元表達式?: ,而且支持操做符的優先級和括號強制優先級,具體請看後面的操做符列表。git
支持大整數和精度運算(2.3.0版本引入)正則表達式
支持函數調用和自定義函數數組
內置支持正則表達式匹配,相似Ruby、Perl的匹配語法,而且支持類Ruby的$digit指向匹配分組。ide
自動類型轉換,當執行操做的時候,會自動判斷操做數類型並作相應轉換,沒法轉換即拋異常。函數
支持傳入變量,支持相似a.b.c的嵌套變量訪問。性能
函數式風格的seq庫,操做集合和數組優化
性能優秀ui
Aviator的限制:
沒有if else、do while等語句,沒有賦值語句,僅支持邏輯表達式、算術表達式、三元表達式和正則匹配。
不支持八進制數字字面量,僅支持十進制和十六進制數字字面量。
這裏我使用最新的版本:
跟着demo,簡單使用下:
輸出:
默認 AviatorEvaluator 以執行速度優先: AviatorEvaluator.setOptimize(AviatorEvaluator.EVAL);
你能夠修改成編譯速度優先,這樣不會作編譯優化: AviatorEvaluator.setOptimize(AviatorEvaluator.COMPILE);
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)
這裏就簡單記錄一下,具體細節使用你們能夠看看文檔!
參考: