import Ġjava . lang . Exception Ċ Ċ class ĠL amb das Ġ{ ĊĠĠĠ Ġfun Ġtest () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" High er - order Ġfunctions ") ĊĠĠĠĠĠĠĠ Ġhandler Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Log ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandler Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Daily Report () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln ("") ĊĠĠĠĠĠĠĠ Ġprintln (" Replace Ġcallbacks Ġ- ĠJava Ġstyle ") ĊĠĠĠĠĠĠĠ Ġval Ġjava Button Ġ= ĠJava Button () ĊĠĠĠĠĠĠĠ Ġjava Button . setOnClickListener ( object Ġ: ĠOn ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick () Ġ= Ġprintln (" onClick ") ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġjava Button . monkey Test () ĊĊĠĠĠĠĠĠĠ Ġprintln ("") ĊĠĠĠĠĠĠĠ Ġprintln (" Replace Ġcallbacks Ġ- ĠKotlin Ġstyle ") ĊĠĠĠĠĠĠĠ Ġ// ĠBy Ġusing Ġhigher - order Ġfunctions , Ġthe Ġpreceding Ġcode Ġcould Ġbe Ġoptim ised ĊĠĠĠĠĠĠĠ Ġval Ġkotlin Button Ġ= ĠKotlin Button () ĊĠĠĠĠĠĠĠ Ġkotlin Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġkotlin Button . monkey Test () ĊĊĠĠĠĠĠĠĠ Ġprintln ("") ĊĠĠĠĠĠĠĠ Ġprintln (" Lambda Ġfunctions ") ĊĠĠĠĠĠĠĠ Ġval Ġadd 1 Ġ= Ġ{ Ġa : ĠInt , Ġb : ĠInt Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ( add 1 ( 3 , Ġ 7 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġadd 2 Ġ= Ġthis :: sum Ġ// Ġthis Ġrefer Ġto Ġa Ġfunction , Ġe . g . ĠString :: format ĊĠĠĠĠĠĠĠ Ġprintln ( add 2 ( 1 , Ġ 9 )) ĊĊĠĠĠĠĠĠĠ Ġprintln ("") ĊĠĠĠĠĠĠĠ Ġprintln (" Pass Ġfunctions Ġas Ġarguments Ġto Ġanother Ġfunction ") ĊĠĠĠĠĠĠĠ Ġval Ġg reet ings Ġ= ĠlistOf (" h ", Ġ" I ", Ġ",", Ġ" Ġ", Ġ" t He RE !") ĊĊĠĠĠĠĠĠĠ Ġprintln ( do Map ( gre et ings , Ġ:: toUpperCase ). join ToString ("", Ġ" Convert Ġto Ġupper Ġcase ĠString Ġ-> Ġ")) ĊĠĠĠĠĠĠĠ Ġprintln ( do Map ( gre et ings , Ġ:: toLowerCase ). join ToString ("", Ġ" Convert Ġto Ġlower Ġcase ĠString Ġ-> Ġ")) ĊĊĠĠĠĠĠĠĠ Ġprintln ("") ĊĠĠĠĠĠĠĠ Ġprintln (" Pass ing Ġa Ġlambda Ġto Ġthe Ġlast Ġparameter ") ĊĠĠĠĠĠĠĠ Ġfoo (" s ", Ġfalse ) Ġ{ Ġx , Ġy Ġ-> Ġ" sum ($ x , Ġ$ y ) Ġ= Ġ${ x Ġ+ Ġy }" Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġprintln ("") ĊĠĠĠĠĠĠĠ Ġprintln (" Implement Ġa Ġfunction Ġtype Ġas Ġan Ġinterface ") ĊĠĠĠĠĠĠĠ Ġprint ("[ Override Ġinvoke ] Ġ") ĊĠĠĠĠĠĠĠ Ġval Ġtutorial View 1 Ġ= Ġ{ Ġmessage : ĠString Ġ-> Ġprintln (" Init Ġtutorial Ġ-> Ġ$ message ") Ġ} ĊĠĠĠĠĠĠĠ Ġtutorial View 1 . invoke (" Page Ġ 1 ") ĊĊĠĠĠĠĠĠĠ Ġprint ("[ Run Ġinvoke ] Ġ") ĊĠĠĠĠĠĠĠ Ġval Ġtutorial View 2 Ġ= ĠTutorial View () ĊĠĠĠĠĠĠĠ Ġtutorial View 2 . invoke (" Page Ġ 2 ") ĊĊĠĠĠĠĠĠĠ Ġprintln ("") ĊĠĠĠĠĠĠĠ Ġprintln (" Invoke ") ĊĠĠĠĠĠĠĠ Ġval Ġjoin : Ġ( String , ĠString ) Ġ-> ĠString Ġ= ĠString :: plus ĊĠĠĠĠĠĠĠ Ġval Ġappend : ĠString .( String ) Ġ-> ĠString Ġ= ĠString :: plus ĊĠĠĠĠĠĠĠ Ġprintln ( join (" Hello , Ġ", Ġ" world ! ")) ĊĠĠĠĠĠĠĠ Ġprintln ( join . invoke (" Hello , Ġ", Ġ" world ! ")) ĊĠĠĠĠĠĠĠ Ġprintln (" Hello , Ġ". append (" world ! ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġjoin Int : ĠInt .( Int ) Ġ-> ĠString Ġ= Ġthis :: join Int String ĊĠĠĠĠĠĠĠ Ġprintln ( join Int ( 1 , Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġprintln ( join Int . invoke ( 3 , Ġ 4 )) ĊĠĠĠĠĠĠĠ Ġprintln ( 5 . join Int ( 6 )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Daily Report (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"{\" id \":\" csv Daily Incident Report \", Ġ\" name \":\" Daily Ġincident s \" }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Log ( logs : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( logs Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNullPointerException () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġhandler Error ( function : Ġ() Ġ-> ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfunction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( result ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsum ( a : ĠInt , Ġb : ĠInt ) Ġ= Ġa Ġ+ Ġb ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġdo Map ( list : ĠList < T >, Ġfunc : Ġ( it : ĠT ) Ġ-> ĠAny ) Ġ= Ġlist . map Ġ{ Ġfunc ( it ) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto UpperCase ( s : ĠString ) Ġ= Ġs . map Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . is Letter ()) Ġit . toUpperCase () Ġelse Ġit ĊĠĠĠ Ġ}. join ToString ("") ĊĊĠĠĠ Ġprivate Ġfun Ġto LowerCase ( s : ĠString ) Ġ= Ġs . map Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . is Letter ()) Ġit . toLowerCase () Ġelse Ġit ĊĠĠĠ Ġ}. join ToString ("") ĊĊĠĠĠ Ġprivate Ġfun Ġjoin Int String ( a : ĠInt , Ġb : ĠInt ) Ġ= Ġ"$ a $ b " ĊĊĠĠĠ Ġprivate Ġfun Ġfoo ( a : ĠString , Ġb : ĠBoolean , Ġc : Ġ( x : ĠInt , Ġy : ĠInt ) Ġ-> ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" a : Ġ$ a ") ĊĠĠĠĠĠĠĠ Ġprintln (" b : Ġ$ b ") ĊĠĠĠĠĠĠĠ Ġprintln ( c ( 2 3 , Ġ 8 4 )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ interface ĠOn ClickListener Ġ{ ĊĠĠĠ Ġfun ĠonClick () Ċ } Ċ Ċ class ĠJava Button Ġ{ ĊĊĠĠĠ Ġprivate Ġvar ĠonClick Listener : ĠOn ClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset OnClickListener ( on ClickListener : ĠOn ClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on ClickListener Ġ= ĠonClick Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmonkey Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener ?. onClick () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠKotlin Button Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠonClick Listener : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset OnClickListener ( on ClickListener : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on ClickListener Ġ= ĠonClick Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmonkey Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener ?. invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTutorial View Ġ: Ġ( String ) Ġ-> ĠUnit Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġcode Ġwon 't Ġbe Ġexecuted ĊĠĠĠĠĠĠĠ Ġprintln (" Tutorial View : Ġinvoke ($ p 1 )") ĊĠĠĠ Ġ} Ċ }