十三 表示式生成器

2021-10-16 13:19:26 字數 2849 閱讀 8748

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...