package Ġcom . example . android _ study . kotlin ._ study ._ 2 _ Function ._ 2 _ High er _ order _ function _ and _ Lambda Ċ Ċ /** Ċ Ġ* ĠAuthor : Ġcreate Ġby ĠR hy thm Coder Ċ Ġ* ĠDate : Ġ 2 0 2 0 / 7 / 3 Ċ Ġ* ĠDescription : Ċ Ġ* Ġ 1 . Ġåĩ½æķ° ç±»åŀĭ ï¼Ī åĩ½æķ° ç±»åŀĭ çĽ¸ å½ĵ äºİ Int ãĢģ String ï¼Į åħ¶å®ŀ æľ¬ è´¨ æĺ¯ä¸Ģä¸ª Function æİ¥åı£ ç±»åŀĭ ï¼ī Ċ Ġ* Ġ 2 . Ġåĩ½æķ° ç±»åŀĭ å®ŀä¾ĭ åĮĸ Ċ Ġ* Ġ 3 . Ġåĩ½æķ° ç±»åŀĭ å®ŀä¾ĭ è°ĥçĶ¨ Ċ Ġ*/ Ċ class ĠA Ġ{ ĊĠĠĠ Ġvar Ġs : ĠFunction < Any ?> ĊĠĠĠ Ġvar Ġb Ġ= ĠA () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// 1 . Ġåĩ½æķ° ç±»åŀĭ ( ç±»ä¼¼ äºİ å£°æĺİ f : Int ) ĊĠĠĠĠĠĠĠ Ġvar Ġf : Ġ() Ġ-> ĠUnit ĊĊĊĠĠĠĠĠĠĠ Ġ// 2 . Ġ å®ŀä¾ĭ åĮĸ åĩ½æķ° ç±»åŀĭ ĊĠĠĠĠĠĠĠ Ġf Ġ= Ġfun () Ġ{} ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 . 1 Ġ åĮ ¿ åĲį åĩ½æķ° ĊĠĠĠĠĠĠĠ Ġf Ġ= Ġ{} ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 . 2 Ġlambda ( lambda Ġ çĽ¸ å½ĵ äºİ Ġ åĮ ¿ åĲį åĩ½æķ° ) ĊĊĠĠĠĠĠĠĠ Ġs Ġ= ĠString :: toString ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 . 3 Ġä½¿çĶ¨ å·² æľī å£°æĺİ çļĦ åı¯ è°ĥçĶ¨ å¼ķçĶ¨ ĊĠĠĠĠĠĠĠ Ġs Ġ= Ġ:: A ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 . 3 Ġ å¼ķçĶ¨ æŀĦéĢł åĩ½æķ° ĊĠĠĠĠĠĠĠ Ġs Ġ= Ġb :: foo ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 . 3 Ġ å¼ķçĶ¨ çī¹å®ļ å®ŀä¾ĭ æĪĲåĳĺ çļĦ ç»ĳ å®ļçļĦ åı¯ è°ĥçĶ¨ å¼ķçĶ¨ ĊĠĠĠĠĠĠĠ Ġs Ġ= ĠInt Transformer () ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 . 4 Ġä½¿çĶ¨ å®ŀçİ° åĩ½æķ° ç±»åŀĭ æİ¥åı£ çļĦ èĩªå®ļä¹ī ç±»çļĦ å®ŀä¾ĭ () ĊĊĊĠĠĠĠĠĠĠ Ġ// 3 . Ġåĩ½æķ° ç±»åŀĭ å®ŀä¾ĭ è°ĥçĶ¨ ( f . invoke ( x ) Ġ æĪĸèĢħ çĽ´æİ¥ Ġf ( x )) ĊĠĠĠĠĠĠĠ Ġ( s Ġas ĠInt Transformer ). invoke ( 1 ) ĊĠĠĠĠĠĠĠ Ġ( s Ġas ĠInt Transformer )( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfoo () Ġ{} ĊĊĠĠĠ Ġclass ĠInt Transformer Ġ: Ġ( Int ) Ġ-> ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġinvoke ( x : ĠInt ): ĠInt Ġ= ĠTODO () ĊĠĠĠ Ġ} Ċ Ċ }