enum Ġclass ĠOperator ( private Ġval Ġidentifier : ĠString , Ġprivate Ġval Ġoperation : Ġ( Int , ĠInt ) Ġ-> ĠInt ) Ġ{ ĊĠĠĠ ĠPL US ("+ ", Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ}), ĊĠĠĠ ĠMIN US ("- ", Ġ{ Ġa , Ġb Ġ-> Ġa Ġ- Ġb Ġ}), ĊĠĠĠ ĠMULTI PLY ("* ", Ġ{ Ġa , Ġb Ġ-> Ġa Ġ* Ġb Ġ}), ĊĠĠĠ ĠDIV IDE ("/", Ġ{ Ġa , Ġb Ġ-> Ġif Ġ( b Ġ!= Ġ 0 ) Ġa Ġ/ Ġb Ġelse Ġexit ( 5 , Ġ" Error !") Ġ}), ĊĠĠĠ ĠMOD ("% ", Ġ{ Ġa , Ġb Ġ-> Ġif Ġ( b Ġ!= Ġ 0 ) Ġa Ġ% Ġb Ġelse Ġexit ( 5 , Ġ" Error !") Ġ}); ĊĊĠĠĠ Ġfun Ġequals ( str : ĠString ) Ġ= Ġstr Ġ== Ġthis . identifier ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( a : ĠInt , Ġb : ĠInt ) Ġ= Ġoperation ( a , Ġb ) Ċ } Ċ Ċ fun Ġget Operator ( str : ĠString ): ĠOperator ? Ġ{ ĊĠĠĠ Ġreturn ĠOperator . values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . equals ( str ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġ( it ) Ġ} Ċ } Ċ