package Ġi _ introduction ._ 9 _ Extension _ Functions Ċ Ċ import Ġutil . TODO Ċ import Ġutil . doc 9 Ċ Ċ // Ġdecl ares Ġan Ġextension Ġfunction Ġthat Ġreturns Ġthe Ġlast Ġcharacter Ċ fun ĠString . last Char () Ġ= Ġthis [ this . length Ġ- Ġ 1 ] ĊĊ Ċ // Ġ' this ' Ġrefers Ġto Ġthe Ġreceiver Ġ( String ) Ġand Ġcan Ġbe Ġomitted Ċ fun ĠString . last Char 1 () Ġ= Ġget ( length Ġ- Ġ 1 ) Ċ Ċ fun Ġuse Extension Function () Ġ{ ĊĠĠĠ Ġ// Ġtry ĠCtrl + Space Ġ" default Ġcompletion " Ġafter Ġthe Ġdot : Ġlast Char () Ġis Ġvisible ĊĠĠĠ Ġ" abc ". last Char () Ċ } Ċ Ċ // Ġ' last Char ' Ġis Ġcompiled Ġto Ġa Ġstatic Ġfunction Ġin Ġthe Ġclass ĠExtension Functions Kt Ġ( see ĠJava Code 9 . use Extension ) Ċ Ċ fun Ġtodo Task 9 (): ĠNothing Ġ= ĠTODO ( ĊĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠTask Ġ 9 . ĊĠĠĠĠĠĠĠ ĠImplement Ġthe Ġextension Ġfunctions ĠInt . r (), ĠPair < Int , ĠInt >. r () ĊĠĠĠĠĠĠĠ Ġto Ġsupport Ġthe Ġfollowing Ġmanner Ġof Ġcreating Ġr ational Ġnumbers : ĊĠĠĠĠĠĠĠĠ 1 . r (), ĠPair ( 1 , Ġ 2 ). r () ĊĠĠĠ Ġ"" ", ĊĠĠĠ Ġdocumentation Ġ= Ġdoc 9 (), ĊĠĠĠ Ġreferences Ġ= Ġ{ Ġ 1 . r (); ĠPair ( 1 , Ġ 2 ). r (); ĠRational Number ( 1 , Ġ 9 ) Ġ}) Ċ Ċ data Ġclass ĠRational Number ( val Ġnum erator : ĠInt , Ġval Ġdenominator : ĠInt ) Ċ Ċ fun ĠInt . r (): ĠRational Number Ġ= ĠRational Number ( this , 1 ) Ċ fun ĠPair < Int , ĠInt >. r (): ĠRational Number Ġ= ĠRational Number ( this . first , this . second ) Ċ Ċ fun Ġmain ( args : Array < String > ){ ĊĠ Ġval Ġl = Ġmutable ListOf ( 1 , 2 , 3 ) ĊĠĠĠ Ġl . swap ( 0 , 2 ) ĊĠĠĠ Ġprint ( l ) ĊĠĠĠ Ġprint ( 4 . r ()) Ċ } Ċ Ċ fun ĠMutable List < Int >. swap ( index 1 : ĠInt , Ġindex 2 : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġtmp Ġ= Ġthis [ index 1 ] Ġ// Ġ' this ' Ġcorresponds Ġto Ġthe Ġlist ĊĠĠĠ Ġthis [ index 1 ] Ġ= Ġthis [ index 2 ] ĊĠĠĠ Ġthis [ index 2 ] Ġ= Ġtmp Ċ }