package Ġcom . kotlin . in action . chapter _ 4 Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author Ġw zc Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 1 / 1 9 Ċ Ġ*/ Ċ sealed Ġclass ĠExpr 1 Ġ{ ĊĠĠĠ Ġclass ĠNum ( val Ġvalue : ĠInt ) Ġ: ĠExpr 1 () ĊĠĠĠ Ġclass ĠSum ( val Ġleft : ĠExpr 1 , Ġval Ġright : ĠExpr 1 ) Ġ: ĠExpr 1 () Ċ } Ċ Ċ sealed Ġclass ĠF ruit Ġ{ ĊĠĠĠ Ġdata Ġclass ĠB an ana ( val Ġt aste : ĠString ): ĠF ruit () ĊĠĠĠ Ġdata Ġclass ĠO range ( val Ġt aste : ĠString ): ĠF ruit () ĊĠĠĠ Ġopen Ġclass ĠApple Ġ: ĠF ruit () Ċ } Ċ // Ġ è¿Ļä¸ª ç±» å¹¶ æ²¡æľī è¢« å¯Ĩ å°ģ ç±» ĠF ruit Ġ æīĢ éĻĲåĪ¶ ï¼Į åĽłä¸º å®ĥ ä¸įæĺ¯ ĠF ruit Ġ ç±»çļĦ çĽ´æİ¥ åŃĲ ç±» ãĢĤ Ċ class ĠH ong f ush i Ġ: ĠF ruit . Apple () Ċ // Ġ éĶĻè¯¯ çļĦ åĨĻ æ³ķ ï¼ļ sealed ĠåĴĮ Ġdata Ġä¸į åħ¼ å®¹ ï¼Į åĽłä¸º Ġsealed Ġ ç±» é»ĺè®¤ æĺ¯ Ġopen ĠçļĦ ï¼Į data Ġ ç±» é»ĺè®¤ æĺ¯ Ġfinal ĠçļĦ ãĢĤ çŁ Ľ çĽ ¾ ãĢĤ Ċ // sealed Ġdata Ġclass ĠXXX XX Ġ{ Ċ // Ċ //} Ċ fun Ġeval 1 ( e : ĠExpr 1 ): ĠInt Ġ= ĊĠĠĠ Ġwhen Ġ( e ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠExpr 1 . Num Ġ-> Ġe . value ĊĠĠĠĠĠĠĠ Ġis ĠExpr 1 . Sum Ġ-> Ġeval 1 ( e . right ) Ġ+ Ġeval 1 ( e . left ) ĊĠĠĠ Ġ} Ċ Ċ fun Ġprint F ruit () Ġ{ ĊĠĠĠ Ġval Ġfruit : ĠF ruit Ġ= ĠF ruit . Ban ana (" soft ") ĊĠĠĠ Ġwhen Ġ( fruit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠF ruit . Ban ana Ġ-> Ġprintln (" ban ana ") ĊĠĠĠĠĠĠĠ Ġis ĠF ruit . Orange Ġ-> Ġprintln (" orange ") ĊĠĠĠĠĠĠĠ Ġis ĠF ruit . Apple Ġ-> Ġprintln (" apple ") ĊĠĠĠ Ġ} Ċ } Ċ /** Ċ Ġ* Ġ æĢ» ç»ĵ ï¼ļ Ċ Ġ* Ġ 1 ï¼Į åµ Į å¥Ĺ ç±»çļĦ ä¸Ģä¸ª ä½¿çĶ¨ åľºæĻ¯ ï¼ļ åĪĽå»ºä¸Ģä¸ª åĮħåĲ« æľī éĻĲ æķ°éĩı çļĦ ç±»çļĦ ç»§æī¿ ç»ĵæŀĦ ï¼ļ å¯Ĩ å°ģ ç±» ï¼Į ä½¿çĶ¨ sealed Ġ ä¿® é¥ ° ç¬¦ ä¿® é¥ ° ãĢĤ Ċ Ġ* Ġ 2 ï¼Į ä¸º çĪ¶ ç±» æ·»åĬł ä¸Ģä¸ª Ġsealed Ġ ä¿® é¥ ° ç¬¦ ï¼Į å¯¹ åı¯èĥ½ åĪĽå»º çļĦ åŃĲ ç±» åģļ åĩº ä¸¥ æł¼ çļĦ éĻĲåĪ¶ ãĢĤ Ċ Ġ* Ġ 3 ï¼Į åİŁ æĿ¥çļĦ åĨĻ æ³ķ ï¼Į åľ¨ when ä¸Ń å¿ħé¡» åĨĻ åĩº else ï¼Į è¿ĺæľī åį³ ä½¿ æ·»åĬł äºĨä¸Ģä¸ª æĸ°çļĦ åĪĨ æĶ¯ ï¼Į ç¼ĸè¯ĳ åĻ¨ ä¹Ł ä¸į çŁ¥éģĵ æľī åľ°æĸ¹ æĶ¹åıĺ äºĨ ãĢĤ Ċ Ġ* Ġ çİ°åľ¨ ä½¿çĶ¨ Ġsealed Ġ ç±» éĻĲåĪ¶ çļĦ åŃĲ ç±» ï¼Į å¦Ĥæŀľ å°ĳ ä¸Ģä¸ª åĪĨ æĶ¯ ï¼Į ç¼ĸè¯ĳ åĻ¨ å°± çŁ¥éģĵ äºĨ ï¼Į å¤ļ ä¸Ģä¸ª åĪĨ æĶ¯ ï¼Į ä¹Ł ä¸į è¡Į ãĢĤ Ċ Ġ* Ġ 4 ï¼Į åľ¨ Ġkotlin Ġ 1 . 0 Ġä¸Ń ï¼Į Ġsealed Ġ ç±»çļĦ åŃĲ ç±» å¿ħé¡» åµ Į å¥Ĺ åľ¨ çĪ¶ ç±» ä¹ĭ ä¸Ń ï¼Į èĢĮ åľ¨ Ġkotlin Ġ 1 . 1 Ġä¸Ń ï¼Į åħģè®¸ åľ¨ åĲĮ ä¸Ģ æĸĩä»¶çļĦ ä»»ä½ķ ä½įç½® Ċ Ġ* Ġ å®ļä¹ī Ġsealed Ġ ç±»çļĦ åŃĲ ç±» ãĢĤ Ċ Ġ* Ġ 5 , Ġsealed Ġ ä¿® é¥ ° ç¬¦ éļĲ åĲ« çļĦ è¿Ļä¸ª ç±» æĺ¯ä¸Ģä¸ª Ġopen Ġ ç±» , Ġä¸į çĦ¶ æĢİä¹Ī ä¼ļ æľī åŃĲ ç±» åĳ¢ ï¼Ł Ċ Ġ* Ġ 6 ï¼Į åľ¨ 1 . 4 . 3 0 åĲİ åı¯ä»¥ èĥ½ å£°æĺİ ä¸Ģä¸ª Ġsealed Ġ æİ¥åı£ äºĨ ãĢĤ Ċ Ġ* Ġ 7 , Ġåľ¨ Ġkotlin Ġ 1 . 1 Ġ ä¹ĭåĲİ ï¼Į Ġsealed Ġ ç±»çļĦ åŃĲ ç±» åı¯ä»¥ ä¸º Ġdata Ġ ç±» ãĢĤ Ċ Ġ* Ġ 8 , Ġsealed ĠåĴĮ Ġdata Ġä¸į åħ¼ å®¹ ãĢĤ Ċ Ġ* Ġ 9 , Ġ å¯Ĩ å°ģ ç±» å®ŀéĻħ ä¸Ĭ éĻĲåĪ¶ çļĦæĺ¯ çĽ´æİ¥ åŃĲ ç±»çļĦ ä¸ªæķ° . Ċ Ġ*/