Aviator(表達式執行引擎)發佈1.0.1

Aviator是一個表達式執行引擎,最近因爲工做上的緣由,又將這個東西擴充了一下,加入了靜態的編譯優化和seq庫。java

對於相似」1+2″這樣由常量組成的表達式,會在編譯的時候直接計算出結果而非生成字節碼運行時計算。很是量組成的表達式如」3.14*R*R+4/2″也會在編譯的時候優化成」3.14*R*R+2″,也就是說能在編譯的時候計算的都計算出來,不能在編譯的時候肯定的就生成字節碼,運行時動態計算。默認不啓用編譯優化,除非設置:
[java]
AviatorEvaluator.setOptimize(AviatorEvaluator.EVAL);
[/java]
另外,加入了seq庫用於操做集合和數組,在aviator中,你能夠用[]操做符直接訪問數組和java.util.List,除此以外seq庫添加了一些對數組和集合的經常使用操做,示例以下:數組

[java]
map(seq,println) //打印集合
map(seq,-) //取集合中元素的相反數組成的集合
include(seq,element) //判斷element是否在集合中
sort(seq) //排序,返回新的集合
reduce(seq,+,0) //求和
reduce(seq,-,1) //求積
filter(seq,seq.gt(3) //大於3的元素組成的新集合
filter(seq,seq.exists()) //不爲nil元素組成的新集合
count(seq) //集合大小
[/java]

能夠看到seq庫的風格偏向FP,可是能作的事情其實有限,畢竟aviator不是一門語言,seq庫只提供了最多見的一些函數,其餘的只有用戶本身擴展了。ide

Aviator的一個介紹PPT函數

Aviator——輕量級表達式執行引擎優化

相關文章
相關標籤/搜索