package Ġcom . android . samples . kotlin . basic . grammar Ċ Ċ import Ġandroid . view . View Ċ Ċ /** Ċ Ġ* Author : lin hu Ċ Ġ* Email : lh zh eng @ grand stream . cn Ċ Ġ* Date : 1 9 - 3 - 7 Ċ Ġ*/ Ċ class ĠLess on 0 7 _ Data Class And Se aled CL ass Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile Ġprivate Ġvar ĠINSTANCE : ĠLess on 0 7 _ Data Class And Se aled CL ass ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠLess on 0 7 _ Data Class And Se aled CL ass Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ?: Ġsynchronized ( this ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠLess on 0 7 _ Data Class And Se aled CL ass (). also Ġ{ ĠINSTANCE Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// 1 . Ġæķ°æį® ç±» ĊĠĠĠ Ġ// Kotlin Ġåı¯ä»¥ åĪĽå»ºä¸Ģä¸ª åıª åĮħåĲ« æķ°æį®çļĦ ç±» ï¼Į åħ³éĶ®åŃĹ ä¸º Ġdata ï¼ļ ĊĊĠĠĠ Ġdata Ġclass ĠUser ( val Ġname : ĠString , Ġval Ġage : ĠInt ) ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ ç¼ĸè¯ĳ åĻ¨ ä¼ļ èĩªåĬ¨ çļĦ ä»İ ä¸» æŀĦéĢł åĩ½æķ° ä¸Ń æł¹æį® æīĢæľī å£°æĺİ çļĦ å±ŀæĢ§ æıĲ åıĸ ä»¥ä¸ĭ åĩ½æķ° ï¼ļ ĊĊĠĠĠ Ġ* Ġequals () Ġ/ ĠhashCode () ĊĠĠĠ Ġ* ĠtoString () Ġ æł¼å¼ı å¦Ĥ Ġ" User ( name = John , Ġage = 4 2 )" ĊĠĠĠ Ġ* Ġcomponent N () Ġfunctions Ġ å¯¹åºĶ äºİ å±ŀæĢ§ ï¼Į æĮī å£°æĺİ é¡ºåºı æİĴ åĪĹ ĊĠĠĠ Ġ* Ġcopy () Ġåĩ½æķ° ĊĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ// å¦Ĥæŀľ è¿ĻäºĽ åĩ½æķ° åľ¨ ç±» ä¸Ń å·²ç»ı è¢« æĺİ ç¡® å®ļä¹ī äºĨ ï¼Į æĪĸèĢħ ä»İ è¶ħ ç±» ä¸Ń ç»§æī¿ èĢĮ æĿ¥ ï¼Į å°± ä¸į åĨį ä¼ļ çĶŁæĪĲ ãĢĤ ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ ä¸ºäºĨ ä¿Ŀè¯ģ çĶŁæĪĲ ä»£çłģ çļĦ ä¸Ģèĩ´ æĢ§ ä»¥åıĬ æľī æĦı ä¹ī ï¼Į æķ°æį® ç±» éľĢè¦ģ æ»¡è¶³ ä»¥ä¸ĭ æĿ¡ä»¶ ï¼ļ ĊĊĠĠĠ Ġ( 1 ) ä¸» æŀĦéĢł åĩ½æķ° èĩ³ å°ĳ åĮħåĲ« ä¸Ģä¸ª åıĤæķ° ãĢĤ ĊĊĠĠĠ Ġ( 2 ) æīĢæľīçļĦ ä¸» æŀĦéĢł åĩ½æķ° çļĦåıĤæķ° å¿ħé¡» æłĩè¯Ĩ ä¸º val Ġ æĪĸèĢħ Ġvar Ġ; ĊĊĠĠĠ Ġ( 3 ) æķ°æį® ç±» ä¸į åı¯ä»¥ å£°æĺİ ä¸º Ġabstract , Ġopen , Ġsealed Ġ æĪĸèĢħ Ġinner ; ĊĊĠĠĠ Ġ( 4 ) æķ°æį® ç±» ä¸įèĥ½ ç»§æī¿ åħ¶ä»ĸ ç±» Ġ( ä½Ĩæĺ¯ åı¯ä»¥ å®ŀçİ° æİ¥åı£ )ãĢĤ ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ// 1 . 1 Ġ å¤įåĪ¶ ĊĠĠĠ Ġ// å¤įåĪ¶ ä½¿çĶ¨ Ġcopy () Ġåĩ½æķ° ï¼Į æĪĳä»¬ åı¯ä»¥ä½¿çĶ¨ è¯¥ åĩ½æķ° å¤įåĪ¶ å¯¹è±¡ å¹¶ ä¿®æĶ¹ éĥ¨åĪĨ å±ŀæĢ§ , Ġ å¯¹äºİ ä¸Ĭ æĸĩ çļĦ ĠUser Ġ ç±» ï¼Į åħ¶ å®ŀçİ° ä¼ļ ç±»ä¼¼ ä¸ĭéĿ¢ è¿Ļæł· ï¼ļ ĊĊĠĠĠ Ġ// fun Ġcopy ( name : ĠString Ġ= Ġthis . name , Ġage : ĠInt Ġ= Ġthis . age ) Ġ= ĠUser ( name , Ġage ) ĊĊĠĠĠ Ġfun ĠtestData Class () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj ack Ġ= ĠUser ( name Ġ= Ġ" Jack ", Ġage Ġ= Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġolder Jack Ġ= Ġj ack . copy ( age Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġprintln ( jack ) ĊĠĠĠĠĠĠĠ Ġprintln ( older Jack ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 . 2 Ġæķ°æį® ç±» ä»¥åıĬ è§£ æŀĦ å£°æĺİ ĊĠĠĠ Ġ// ç»Ħä»¶ åĩ½æķ° åħģè®¸ æķ°æį® ç±» åľ¨ è§£ æŀĦ å£°æĺİ ä¸Ń ä½¿çĶ¨ ï¼ļ ĊĊĠĠĠ Ġfun Ġj ie g ou Intr ud uce (){ ĊĠĠĠĠĠĠĠ Ġval Ġj ane Ġ= ĠUser (" J ane ", Ġ 3 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġ( name , Ġage ) Ġ= Ġj ane ĊĠĠĠĠĠĠĠ Ġprintln ("$ name , Ġ$ age Ġyears Ġof Ġage ") Ġ// Ġprints Ġ" J ane , Ġ 3 5 Ġyears Ġof Ġage " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 . 3 Ġ æłĩåĩĨ æķ°æį® ç±» ĊĠĠĠ Ġ// æłĩåĩĨ åºĵ æıĲä¾ĽäºĨ ĠPair ĠåĴĮ ĠTrip le ĠãĢĤ åľ¨ å¤§ å¤ļ æķ° æĥħ å½¢ ä¸Ń ï¼Į åĳ½åĲį æķ°æį® ç±» æĺ¯ æĽ´ å¥½çļĦ è®¾è®¡ éĢīæĭ© ï¼Į ĊĠĠĠ Ġ// Ġ åĽłä¸º è¿Ļæł· ä»£çłģ åı¯ è¯» æĢ§ æĽ´ å¼º èĢĮä¸Ķ æıĲä¾ĽäºĨ æľī æĦı ä¹ī çļĦ åĲįåŃĹ åĴĮ å±ŀæĢ§ ãĢĤ ĊĊĠĠĠ Ġ// 2 . Ġ å¯Ĩ å°ģ ç±» ĊĠĠĠ Ġ/* å¯Ĩ å°ģ ç±» çĶ¨æĿ¥ è¡¨ç¤º åıĹ éĻĲ çļĦ ç±» ç»§æī¿ ç»ĵæŀĦ ï¼ļ å½ĵ ä¸Ģä¸ª åĢ¼ä¸º æľī éĻĲ åĩł ç§į çļĦ ç±»åŀĭ , Ġ èĢĮ ä¸įèĥ½ æľī ä»»ä½ķ åħ¶ä»ĸ ç±»åŀĭ æĹ¶ ãĢĤ åľ¨ æŁĲ ç§į æĦı ä¹ī ä¸Ĭ ï¼Į ä»ĸä»¬ æĺ¯ æŀļ ä¸¾ ç±»çļĦ æī©å±ķ ï¼ļ æŀļ ä¸¾ ç±»åŀĭ çļĦåĢ¼ éĽĨåĲĪ ĊĠĠĠ Ġ ä¹Łæĺ¯ åıĹ éĻĲ çļĦ ï¼Į ä½Ĩ æ¯ıä¸ª æŀļ ä¸¾ å¸¸ éĩı åıª åŃĺåľ¨ ä¸Ģä¸ª å®ŀä¾ĭ ï¼Į èĢĮ å¯Ĩ å°ģ ç±» ĠçļĦ ä¸Ģä¸ª åŃĲ ç±» åı¯ä»¥ æľī åı¯ åĮħåĲ« çĬ¶æĢģ çļĦ å¤ļä¸ª å®ŀä¾ĭ ãĢĤ ĊĊĠĠĠ Ġ å£°æĺİ ä¸Ģä¸ª å¯Ĩ å°ģ ç±» ï¼Į ä½¿çĶ¨ Ġsealed Ġ ä¿® é¥ ° ç±» ï¼Į å¯Ĩ å°ģ ç±» åı¯ä»¥ æľī åŃĲ ç±» ï¼Į ä½Ĩæĺ¯ æīĢæľīçļĦ åŃĲ ç±» éĥ½ å¿ħé¡» è¦ģ åĨħ åµ Į åľ¨ å¯Ĩ å°ģ ç±» ä¸Ń ãĢĤ ĊĊĠĠĠ Ġsealed Ġ ä¸įèĥ½ ä¿® é¥ ° Ġinterface Ġ, abstract Ġclass ( ä¼ļ æĬ¥ Ġwarning , ä½Ĩæĺ¯ ä¸įä¼ļ åĩºçİ° ç¼ĸè¯ĳ éĶĻè¯¯ ) */ ĊĊĠĠĠ Ġsealed Ġclass ĠExpr { ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠConst ( val Ġnumber : ĠDouble ) Ġ: ĠExpr () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSum ( val Ġe 1 : ĠExpr , Ġval Ġe 2 : ĠExpr ) Ġ: ĠExpr () ĊĠĠĠĠĠĠĠ Ġobject ĠNot AN umber Ġ: ĠExpr () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġeval ( expr : ĠExpr ): ĠDouble Ġ= Ġwhen Ġ( expr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠExpr . Const Ġ-> Ġexpr . number ĊĠĠĠĠĠĠĠ Ġis ĠExpr . Sum Ġ-> Ġeval ( expr . e 1 ) Ġ+ Ġeval ( expr . e 2 ) ĊĠĠĠĠĠĠĠ ĠExpr . Not AN umber Ġ-> ĠDouble . NaN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ä½¿çĶ¨ å¯Ĩ å°ģ ç±»çļĦ åħ³éĶ® å¥½ å¤Ħ åľ¨ äºİ ä½¿çĶ¨ Ġwhen Ġ è¡¨è¾¾å¼ı ĠçļĦ æĹ¶åĢĻ ï¼Į å¦Ĥæŀľ èĥ½å¤Ł Ġ éªĮè¯ģ è¯Ńåı¥ è¦ĨçĽĸ äºĨ æīĢæľī æĥħåĨµ ï¼Į å°± ä¸įéľĢè¦ģ ä¸º è¯¥ è¯Ńåı¥ åĨį æ·»åĬł ä¸Ģä¸ª Ġelse Ġ åŃĲ åı¥ äºĨ ãĢĤ ĊĠĠĠ Ġfun Ġeval 2 ( expr : ĠExpr ): ĠDouble Ġ= Ġwhen ( expr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠExpr . Const Ġ-> Ġexpr . number ĊĠĠĠĠĠĠĠ Ġis ĠExpr . Sum Ġ-> Ġeval ( expr . e 1 ) Ġ+ Ġeval ( expr . e 2 ) ĊĠĠĠĠĠĠĠ ĠExpr . Not AN umber Ġ-> ĠDouble . NaN ĊĠĠĠĠĠĠĠ Ġ// Ġä¸į åĨį éľĢè¦ģ Ġ` else ` Ġ åŃĲ åı¥ ï¼Į åĽłä¸º æĪĳä»¬ å·²ç»ı è¦ĨçĽĸ äºĨ æīĢæľīçļĦ æĥħåĨµ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* æĪĳçļĦ çĲĨè§£ å¯Ĩ å°ģ ç±» å°±æĺ¯ ä¸Ģç§į ä¸ĵ éĹ¨ çĶ¨æĿ¥ éħį åĲĪ Ġwhen Ġ è¯Ńåı¥ ä½¿çĶ¨çļĦ ç±» ï¼Į ä¸¾ ä¸ª ä¾ĭåŃĲ ï¼Į åģĩ å¦Ĥ åľ¨ ĠAndroid Ġä¸Ń æĪĳä»¬ æľīä¸Ģä¸ª Ġview ï¼Į æĪĳä»¬ çİ°åľ¨ æĥ³ éĢļè¿ĩ ĊĠĠĠ Ġwhen Ġ è¯Ńåı¥ è®¾ç½® éĴĪå¯¹ Ġview Ġ è¿Ľè¡Į ä¸¤ç§į æĵįä½ľ ï¼ļ æĺ¾ç¤º åĴĮ éļĲèĹı ï¼Į éĤ£ä¹Ī å°±åı¯ä»¥ è¿Ļæł· åģļ ï¼ļ */ ĊĊĠĠĠ Ġsealed Ġclass ĠUi Op Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠShow : ĠUi Op () ĊĠĠĠĠĠĠĠ Ġobject ĠHide : ĠUi Op () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġexecute ( view : ĠView , Ġop : ĠUi Op ) Ġ= Ġwhen Ġ( op ) Ġ{ ĊĠĠĠĠĠĠĠ ĠUi Op . Show Ġ-> Ġview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ ĠUi Op . Hide Ġ-> Ġview . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ä»¥ä¸Ĭ åĬŁèĥ½ åħ¶å®ŀ å®Įåħ¨ åı¯ä»¥ çĶ¨ æŀļ ä¸¾ å®ŀçİ° ï¼Į ä½Ĩæĺ¯ å¦Ĥæŀľ æĪĳä»¬ çİ°åľ¨ æĥ³ åĬł ä¸¤ä¸ª æĵįä½ľ ï¼ļ æ°´ å¹³ å¹³ ç§» åĴĮ çº µ åĲĳ å¹³ ç§» ï¼Į å¹¶ä¸Ķ è¿ĺ è¦ģ æĲ º å¸¦ ä¸ĢäºĽ æķ°æį® ï¼Į æ¯Ķå¦Ĥ å¹³ ç§» äºĨ å¤ļå°ĳ è·Ŀç¦» ï¼Į ĊĠĠĠ Ġ// å¹³ ç§» è¿ĩç¨ĭ çļĦ åĬ¨çĶ» ç±»åŀĭ çŃī æķ°æį® ï¼Į çĶ¨ æŀļ ä¸¾ æĺ¾ çĦ¶ å°± ä¸į å¤ª å¥½ åĬŀ äºĨ ï¼Į è¿Ļ æĹ¶ å¯Ĩ å°ģ ç±»çļĦ ä¼ĺ åĬ¿ å°±åı¯ä»¥ åıĳ æĮ ¥ äºĨ ï¼Į ä¾ĭå¦Ĥ ï¼ļ ĊĠĠĠ Ġsealed Ġclass ĠUi Op 1 Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠShow : ĠUi Op 1 () ĊĠĠĠĠĠĠĠ Ġobject ĠHide : ĠUi Op 1 () ĊĠĠĠĠĠĠĠ Ġclass ĠTranslate X ( val Ġpx : ĠFloat ): ĠUi Op 1 () ĊĠĠĠĠĠĠĠ Ġclass ĠTranslate Y ( val Ġpx : ĠFloat ): ĠUi Op 1 () ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġexecute ( view : ĠView , Ġop : ĠUi Op 1 ) Ġ= Ġwhen Ġ( op ) Ġ{ ĊĠĠĠĠĠĠĠ ĠUi Op 1 . Show Ġ-> Ġview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ ĠUi Op 1 . Hide Ġ-> Ġview . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿Ļä¸ª Ġwhen Ġ è¯Ńåı¥ åĪĨ æĶ¯ ä¸į ä»ħ åĳĬ è¯ī Ġview Ġ è¦ģ æ°´ å¹³ ç§»åĬ¨ ï¼Į ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿ĺ åĳĬ è¯ī Ġview ĠéľĢè¦ģ ç§»åĬ¨ å¤ļå°ĳ è·Ŀç¦» ï¼Į è¿Ļæĺ¯ æŀļ ä¸¾ çŃī ĠJava Ġ ä¼ł ç»Ł æĢĿ æĥ³ ä¸į å®¹æĺĵ å®ŀçİ° çļĦ ĊĠĠĠĠĠĠĠ Ġis ĠUi Op 1 . Translate X Ġ-> Ġview . translation X Ġ= Ġop . px ĊĠĠĠĠĠĠĠ Ġis ĠUi Op 1 . Translate Y Ġ-> Ġview . translation Y Ġ= Ġop . px ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ä»¥ä¸Ĭ ä»£çłģ ä¸Ń ï¼Į Translate X Ġ æĺ¯ä¸Ģä¸ª ç±» ï¼Į å®ĥ åı¯ä»¥ æĲ º å¸¦ å¤ļ äºİ ä¸Ģä¸ª çļĦä¿¡æģ¯ ï¼Į æ¯Ķå¦Ĥ éĻ¤äºĨ åĳĬ è¯ī Ġview ĠéľĢè¦ģ æ°´ å¹³ å¹³ ç§» ä¹ĭ å¤ĸ ï¼Į è¿ĺ åı¯ä»¥ åĳĬ è¯ī Ġview Ġ å¹³ ç§» å¤ļå°ĳ åĥı ç´ł ï¼Į ĊĠĠĠ Ġ// çĶļ èĩ³ è¿ĺ åı¯ä»¥ åĳĬ è¯ī Ġview Ġ å¹³ ç§» çļĦ åĬ¨çĶ» ç±»åŀĭ çŃī ä¿¡æģ¯ ï¼Į æĪĳ æĥ³ è¿Ļ å¤§ æ¦Ĥ å°±æĺ¯ å¯Ĩ å°ģ ç±» åĩºçİ° çļĦ æĦı ä¹ī åĲ§ ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ éĻ¤ æŃ¤ ä¹ĭ å¤ĸ ï¼Į å¦Ĥæŀľ Ġwhen Ġ è¯Ńåı¥ çļĦ åĪĨ æĶ¯ ä¸įéľĢè¦ģ æĲ º å¸¦ éĻ¤ âĢľ æĺ¾ç¤º æĪĸ éļĲèĹı view ä¹ĭ å¤ĸ çļĦ åħ¶å®ĥ ä¿¡æģ¯ âĢĿ æĹ¶ ï¼Ī åį³ åıª éľĢè¦ģ è¡¨ æĺİ Ġwhen Ġ è¯Ńåı¥ åĪĨ æĶ¯ ï¼Į ä¸įéľĢè¦ģ æĲ º å¸¦ é¢Ŀ å¤ĸ æķ°æį® æĹ¶ ï¼ī ĊĠĠĠ Ġï¼Į çĶ¨ Ġobject Ġ åħ³éĶ®åŃĹ åĪĽå»º åįķ ä¾ĭ å°±åı¯ä»¥ äºĨ ï¼Į å¹¶ä¸Ķ æŃ¤ æĹ¶ Ġwhen Ġ åŃĲ åı¥ ä¸įéľĢè¦ģ ä½¿çĶ¨ Ġis Ġ åħ³éĶ®åŃĹ ãĢĤ åıªæľī éľĢè¦ģ æĲ º å¸¦ é¢Ŀ å¤ĸ ä¿¡æģ¯ æĹ¶ æīį å®ļä¹ī å¯Ĩ å°ģ ç±»çļĦ åŃĲ ç±» ï¼Į ĊĠĠĠ Ġ èĢĮä¸Ķ ä½¿çĶ¨ äºĨ å¯Ĩ å°ģ ç±» å°± ä¸įéľĢè¦ģ ä½¿çĶ¨ Ġelse Ġ åŃĲ åı¥ ï¼Į æ¯ı å½ĵ æĪĳä»¬ å¤ļ å¢ŀåĬł ä¸Ģä¸ª å¯Ĩ å°ģ ç±»çļĦ åŃĲ ç±» æĪĸ åįķ ä¾ĭ ï¼Į ç¼ĸè¯ĳ åĻ¨ å°±ä¼ļ åľ¨ Ġwhen Ġ è¯Ńåı¥ ä¸Ń ç»Ļ åĩº æıĲç¤º ï¼Į åı¯ä»¥åľ¨ ç¼ĸè¯ĳ éĺ¶æ®µ ĊĠĠĠ Ġ å°± åıĬ æĹ¶ åıĳçİ° éĶĻè¯¯ ï¼Į è¿Ļ ä¹Łæĺ¯ ä»¥ å¾Ģ Ġswitch - case Ġ è¯Ńåı¥ åĴĮ æŀļ ä¸¾ ä¸į åħ· å¤ĩ çļĦ åĬŁèĥ½ ãĢĤ ĊĊĠĠĠ Ġ æľĢåĲİ ï¼Į æĪĳä»¬ çĶļ èĩ³ åı¯ä»¥ æĬĬ è¿Ļä¸Ģ ç»Ħ æĵįä½ľ å°ģè£ħ æĪĲ ä¸Ģä¸ª åĩ½æķ° ï¼Į ä»¥ ä¾¿ æĹ¥ åĲİ è°ĥçĶ¨ ï¼Į å¦Ĥä¸ĭ ï¼ļ ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġ// Ġ åħĪ å°ģè£ħ ä¸Ģä¸ª UI æĵįä½ľ åĪĹè¡¨ ĊĠĠĠ Ġclass ĠUi ( val Ġui Ops : ĠList < Ui Op 1 > Ġ= Ġempty List ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġplus ( ui Op : ĠUi Op 1 ) Ġ= ĠUi ( ui Ops Ġ+ Ġui Op ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ å®ļä¹ī ä¸Ģ ç»Ħ æĵįä½ľ ĊĠĠĠ Ġval Ġui Ġ= ĠUi () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Op 1 . Show Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Op 1 . Translate X ( 2 0 f ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Op 1 . Translate Y ( 4 0 f ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Op 1 . Hide ĊĠĠĠ Ġ// Ġ å®ļä¹ī è°ĥçĶ¨ çļĦ åĩ½æķ° ĊĠĠĠ Ġfun Ġrun ( view : ĠView , Ġui : ĠUi ) Ġ{ ĊĠĠĠĠĠĠĠ Ġui . ui Ops . forEach Ġ{ Ġexecute ( view , Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// run ( view , Ġui ) Ġ// Ġ æľĢç»Ī è°ĥçĶ¨ Ċ Ċ }