spring 裡面有工具來計算數學表示式如下, 那麼面對乙個新的表示式, 我們要做的就是先轉成spel 表示式(字串). 然後再用spring 的spel 工具來計算
@test
public
void
demoncalculation()
式子呢, 無非是式子-操作符-因子, 式子-操作符-式子 因子-操作符-因子 等等的排列組合. 我們把式子和因子抽象出來
public
inte***ce
splable
;default
intgetorder()
;stringbuffer
getexp()
;stringbuffer
getsplexp()
;}
表示式類
public
class
implements
splable
public
void
setorder
(int order)
public
void
setneedbracket
(boolean needbracket)
public
(int order,
stringbuffer splexp,
stringbuffer exp)
private
stringbuffer
generateexp
(stringbuffer str)
@override
public
stringbuffer
getexp()
@override
public
stringbuffer
getsplexp()
}
因子類
public enum smafactor implements splable
@override
public
stringbuffer
getexp()
@override
public
stringbuffer
getsplexp()
}操作符定義
public
enum
mathoperator
public
string
getdisplay()
public
string
getsplexpression()
public
intgetorder()
}
操作符
public
class
infixoperator
implements
operator
public
stringbuffer
generatesplexp
(splable s1,
splable s2)
public
stringbuffer
generateexp
(splable s1,
splable s2)
public
infixoperator
(mathoperator operator)
}
過載操作符
operator
fun splable.
plus
(s: splable)
infixoperator
(mathoperator.plus)
.execute
(this
, s)
operator
fun splable.
minus
(s: splable)
infixoperator
(mathoperator.minus)
.execute
(this
, s)
operator
fun splable.
times
(s: splable)
infixoperator
(mathoperator.multiply)
.execute
(this
, s)
operator
fun splable.
div(s: splable)
infixoperator
(mathoperator.divided_by)
.execute
(this
, s)
funabs
(s: splable)
abs().
execute
(s)fun
min(s1: splable, s2: splable)
prefixoperator
(mathoperator.min)
.execute
(s1, s2)
!!fun
max(s1: splable, s2: splable)
prefixoperator
(mathoperator.max)
.execute
(s1, s2)
!!
測試類
@test
funcangenerateexpression()
完美 生成器表示式
生成器 生成器本質是迭代器,允許自定義邏輯的迭代器 迭代器和生成器區別 迭代器本身是系統內建的.重寫不了.而生成器是使用者自定義的,可以重寫迭代邏輯 生成器可以用兩種方式建立 1 生成器表示式 裡面是推導式,外面用圓括號 2 生成器函式 用def定義,裡面含有yield 1 生成器表示式 gener...
生成器 表示式
1.什麼是生成器?生成的工具。生成器是乙個 自定義 的迭代器,本質上是乙個迭代器。2.如何實現生成器但凡在函式內部定義了的yield,呼叫函式時,函式體 不會執行,會返回乙個結果,該結果就是乙個生成器。yield 每一次yield都會往生成器物件中新增乙個值。yield只能在函式內部定義 yield...
生成器表示式
把列表推導式的換成 就是生成器表示式 示例 把生一筐雞蛋變成給你乙隻老母雞,這也是生成器的特性 chicken 雞蛋 s item for item in range 10 print chicken 生成器物件記憶體位址 print next chicken 雞蛋0 print next chic...