package Ġcom . lt z . kotlin demo . chapter 8 . chapter 8 _ 1 Ċ Ċ import Ġjava . lang . StringBuilder Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġx ia ow ei Ġon Ġ 2 0 1 8 / 1 1 / 6 Ċ Ġ* Ġåĩ½æķ° ç±»åŀĭçļĦ é»ĺè®¤ åĢ¼ åĴĮ null åĢ¼ Ċ Ġ*/ Ċ Ċ fun Ġprint 8 _ 1 _ 4 () Ġ{ ĊĠĠĠ Ġval Ġstages Ġ= ĠlistOf (" Low ", Ġ" Middle ", Ġ" He igh ") ĊĠĠĠ Ġprintln ( stages . join ToString ()) ĊĠĠĠ Ġprintln ( stages . join ToString Ġ{ Ġit . toUpperCase () Ġ}) ĊĠĠĠ Ġfoo Ġ{} ĊĊĊĠĠĠ Ġprintln ( stages . join ToString 1 ()) Ċ Ċ } Ċ Ċ fun Ġ< T > ĠCollection < T >. join ToString ( ĊĠĠĠĠĠĠĠ Ġseparator : ĠString Ġ= Ġ",", ĊĠĠĠĠĠĠĠ Ġprefix : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġpostfix : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġtransform : Ġ( T ) Ġ-> ĠString Ġ= Ġ{ Ġit . toString () Ġ}): ĠString Ġ{ ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( prefix ) ĊĠĠĠ Ġfor Ġ(( index , Ġelement ) Ġin Ġthis . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 0 ) Ġsb . append ( separator ) Ċ // ĠĠĠĠĠĠĠ Ġsb . append ( element ) Ġ// é»ĺè®¤ è°ĥçĶ¨ toString () ĊĠĠĠĠĠĠĠ Ġsb . append ( transform ( element )) // å°Ĩ å¯¹è±¡ æī§è¡Į ä¼łåħ¥ çļĦ æĵįä½ľ ĊĠĠĠ Ġ} ĊĠĠĠ Ġsb . append ( postfix ) ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ fun Ġ< T > ĠCollection < T >. join ToString 1 ( ĊĠĠĠĠĠĠĠ Ġseparator : ĠString Ġ= Ġ",", ĊĠĠĠĠĠĠĠ Ġprefix : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġpostfix : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġtransform : Ġ(( T ) Ġ-> ĠString )? Ġ= Ġnull ): ĠString Ġ{ Ġ// è¡¨ç¤º åı¯ ç©º ç±»åŀĭ ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( prefix ) ĊĠĠĠ Ġfor Ġ(( index , Ġelement ) Ġin Ġthis . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 0 ) Ġsb . append ( separator ) Ċ // ĠĠĠĠĠĠĠ Ġsb . append ( element ) Ġ// é»ĺè®¤ è°ĥçĶ¨ toString () ĊĠĠĠĠĠĠĠ Ġsb . append ( transform ?. invoke ( element )) // ä¸º null æĹ¶ è°ĥçĶ¨ invoke ĊĠĠĠ Ġ} ĊĠĠĠ Ġsb . append ( postfix ) ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } ĊĊ Ċ fun Ġfoo ( callback : Ġ(() Ġ-> ĠUnit )? ) Ġ{ Ċ // ĠĠĠ Ġcallback ?. invoke () ĊĠĠĠ Ġif Ġ( callback Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠ Ġ} Ċ } Ċ