import Ġkotlin . coroutines . experimental . build Iterator Ċ Ċ fun Ġgive Hello Message () Ġ= Ġ" Hello Ġworld !" Ċ Ċ fun Ġfunctions Can Handle ( unnamed Parameter : ĠInt , Ġnamed Parameter : ĠInt ) Ġ= Ġnamed Parameter Ċ Ċ fun Ġfunctions Can Have Default Args ( Parameter : ĠInt Ġ= Ġ 4 2 ) Ġ= ĠParameter Ċ Ċ fun ĠString . functions Can Extend Existing Types (): ĠString Ġ= ĊĠĠĠ Ġthis Ġ+ Ġ" Ġhas Ġbeen Ġextended !" Ċ Ċ class ĠExisting Type Ġ{ ĊĠĠĠ Ġfun Ġfunction OfType () Ġ= Ġ" Member Ġfunctions Ġshadow Ġextending Ġones ." Ċ } Ċ fun ĠExisting Type . function OfType () Ġ= ĊĠĠĠĠĠĠĠ Ġ" Extension Ġfunctions Ġwith Ġsame Ġsignature Ġas Ġmembers Ġwill Ġnever Ġbe Ġcalled !" Ċ Ċ fun ĠAny ?. nullable Types Can Be Extended () Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ" extension Ġon Ġnull " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" extension Ġon Ġnon - null " ĊĠĠĠĠĠĠĠ Ġ} Ċ /** ĠHave Ġto Ġuse Ġclasses Ġfor Ġmultiple Ġnamed Ġreturn Ġvalues Ġ*/ Ċ data Ġclass ĠTwo Named Values ( val Ġvalue B : String , Ġval Ġvalue A : ĠString ) Ċ fun Ġswap Two Named Values ( value A : ĠString , Ġvalue B : ĠString ) Ġ= ĠTwo Named Values ( value B , Ġvalue A ) Ċ Ċ /** ĠOperator Ġover loading Ġ*/ Ċ class ĠPoint ( val Ġx : ĠInt , Ġval Ġy : ĠInt ) Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġplus ( point : ĠPoint ) Ġ= ĠPoint ( x Ġ+ Ġpoint . x , Ġy Ġ+ Ġpoint . y ) Ċ } Ċ Ċ fun Ġfunctions Can Have Variable NumberOf Args ( var arg Ġstrings : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġstrings . fold ("", Ġ{ Ġstring 1 , Ġstring 2 Ġ-> Ġstring 1 Ġ+ Ġstring 2 Ġ}) Ċ Ċ fun Ġfunctions Can Take Functions As Parameters ( str : ĠString , Ġfn : Ġ( String ) Ġ-> ĠString ) Ġ= Ġfn ( str ) Ċ Ċ fun Ġfunctions Can Return Functions () Ġ= Ġ{ Ġstr : String Ġ-> Ġstr . reversed () Ġ} Ċ Ċ /** ĠPython Ġdecorator Ġpattern Ġ*/ Ċ val Ġun decor ated Function 1 Ġ= Ġ Ġ{ Ġ" un decor ated Ġ" Ġ} Ċ fun Ġun decor ated Function 2 () Ġ= Ġ" un decor ated Ġ" Ċ Ċ fun Ġdecorator Function ( fn : Ġ() Ġ-> ĠString ): Ġ() Ġ-> ĠString Ġ= Ġ Ġ{ Ġ" before Ġ" Ġ+ Ġfn () Ġ+ Ġ" after " Ġ} Ċ Ċ val Ġdecor ated Function 1 Ġ= Ġdecorator Function ( un decor ated Function 1 ) Ċ val Ġdecor ated Function 2 Ġ= Ġdecorator Function (:: un decor ated Function 2 ) Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġprintln ( decor ated Function 1 ()) ĊĠĠĠ Ġprintln ( decor ated Function 2 ()) Ċ }