/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠR az ew are ĠLLC Ċ Ġ* ĠĊ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* ĠĊ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* ĠĊ Ġ* ĠNot with standing Ġthe Ġfore going , Ġyou Ġmay Ġnot Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , ĠĊ Ġ* Ġdistribute , Ġsublicense , Ġcreate Ġa Ġderivative Ġwork , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠĊ Ġ* ĠSoftware Ġin Ġany Ġwork Ġthat Ġis Ġdesigned , Ġintended , Ġor Ġmarket ed Ġfor Ġped ag og ical Ġor ĠĊ Ġ* Ġinstruction al Ġpurposes Ġrelated Ġto Ġprogramming , Ġcoding , Ġapplication Ġdevelopment , ĠĊ Ġ* Ġor Ġinformation Ġtechnology . Ġ ĠPermission Ġfor Ġsuch Ġuse , Ġcopying , Ġmodification , Ċ Ġ* Ġmer ger , Ġpublication , Ġdistribution , Ġsublic ensing , Ġcreation Ġof Ġderivative Ġworks , ĠĊ Ġ* Ġor Ġsale Ġis Ġexpress ly Ġwith held . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ fun Ġmain () Ġ{ ĊĊĠ Ġ// ĠLambda Ġbasics ĊĊĠ Ġvar Ġmultiply Lambda : Ġ( Int , ĠInt ) Ġ-> ĠInt ĊĊĠ Ġmultiply Lambda Ġ= Ġ{ Ġa : ĠInt , Ġb : ĠInt Ġ-> ĊĠĠĠ ĠInt ĊĠĠĠ Ġa Ġ* Ġb ĊĠ Ġ} ĊĊĠ Ġval Ġlambda Result Ġ= Ġmultiply Lambda ( 4 , Ġ 2 ) Ġ// Ġ 8 ĊĊĠ Ġ//// ĠSh orthand Ġsyntax ĊĊĠ Ġmultiply Lambda Ġ= Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠ Ġa Ġ* Ġb ĊĠ Ġ} ĊĊĠ Ġ//// Ġit Ġkeyword ĊĊĠ Ġvar Ġdouble Lambda Ġ= Ġ{ Ġa : ĠInt Ġ-> ĊĠĠĠĠ 2 Ġ* Ġa ĊĠ Ġ} ĊĊĠ Ġdouble Lambda Ġ= Ġ{ Ġ 2 Ġ* Ġit Ġ} ĊĊĠ Ġval Ġsquare : Ġ( Int ) Ġ-> ĠInt Ġ= Ġ{ Ġit Ġ* Ġit Ġ} ĊĊĠ Ġ// Ġlamb das Ġas Ġarguments ĊĊĠ Ġfun Ġoperate On Numbers ( a : ĠInt , Ġb : ĠInt , Ġoperation : Ġ( Int , ĠInt ) Ġ-> ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= Ġoperation ( a , Ġb ) ĊĠĠĠ Ġprintln ( result ) ĊĠĠĠ Ġreturn Ġresult ĊĠ Ġ} ĊĊĠ Ġval Ġadd Lambda Ġ= Ġ{ Ġa : ĠInt , Ġb : ĠInt Ġ-> ĊĠĠĠ Ġa Ġ+ Ġb ĊĠ Ġ} ĊĠ Ġoperate On Numbers ( 4 , Ġ 2 , Ġoperation Ġ= Ġadd Lambda ) Ġ// Ġ 6 ĊĊĠ Ġfun Ġadd Function ( a : ĠInt , Ġb : ĠInt ) Ġ= Ġa Ġ+ Ġb ĊĊĠ Ġoperate On Numbers ( 4 , Ġ 2 , Ġoperation Ġ= Ġ:: addFunction ) Ġ// Ġ 6 ĊĊĠ Ġoperate On Numbers ( 4 , Ġ 2 , Ġoperation Ġ= Ġ{ Ġa : ĠInt , Ġb : ĠInt Ġ-> ĊĠĠĠ Ġa Ġ+ Ġb ĊĠ Ġ}) ĊĊĠ Ġoperate On Numbers ( 4 , Ġ 2 , Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠ Ġa Ġ+ Ġb ĊĠ Ġ}) ĊĊĠ Ġoperate On Numbers ( 4 , Ġ 2 , Ġoperation Ġ= ĠInt :: plus ) ĊĊĠ Ġoperate On Numbers ( 4 , Ġ 2 ) Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠ Ġa Ġ+ Ġb ĊĠ Ġ} ĊĊĠ Ġ//// ĠL amb das Ġwith Ġno Ġreturn Ġvalue ĊĊĠ Ġvar Ġunit Lambda : Ġ() Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠ Ġprintln (" Kotlin ĠApp rent ice Ġis Ġawesome !") ĊĠ Ġ} ĊĠ Ġunit Lambda () ĊĊĠ Ġunit Lambda Ġ= Ġ{ Ġprintln (" Kotlin ĠApp rent ice Ġis Ġawesome !") Ġ} ĊĠ Ġunit Lambda () ĊĊĠ Ġvar Ġnothing Lambda : Ġ() Ġ-> ĠNothing Ġ= Ġ{ Ġthrow ĠNullPointerException () Ġ} ĊĊĠ Ġ//// ĠCapt uring Ġfrom Ġthe Ġen closing Ġscope ĊĊĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠ Ġval Ġincrement Counter Ġ= Ġ{ ĊĠĠĠ Ġcounter Ġ+= Ġ 1 ĊĠ Ġ} ĊĠ Ġprintln ( counter ) Ġ// Ġ> Ġ 0 ĊĊĠ Ġincrement Counter () ĊĠ Ġincrement Counter () ĊĠ Ġincrement Counter () ĊĠ Ġincrement Counter () ĊĠ Ġincrement Counter () ĊĠ Ġprintln ( counter ) Ġ// Ġ> Ġ 5 ĊĊĠ Ġfun Ġcounting Lambda (): Ġ() Ġ-> ĠInt Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġincrement Counter : Ġ() Ġ-> ĠInt Ġ= Ġ{ ĊĠĠĠĠĠ Ġcounter Ġ+= Ġ 1 ĊĠĠĠĠĠ Ġcounter ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġincrement Counter ĊĠ Ġ} ĊĊĠ Ġval Ġcounter 1 Ġ= Ġcounting Lambda () ĊĠ Ġval Ġcounter 2 Ġ= Ġcounting Lambda () ĊĊĠ Ġprintln ( counter 1 ()) Ġ// Ġ> Ġ 1 ĊĠ Ġprintln ( counter 2 ()) Ġ// Ġ> Ġ 1 ĊĠ Ġprintln ( counter 1 ()) Ġ// Ġ> Ġ 2 ĊĠ Ġprintln ( counter 1 ()) Ġ// Ġ> Ġ 3 ĊĠ Ġprintln ( counter 2 ()) Ġ// Ġ> Ġ 2 ĊĊĠ Ġ// ĠCustom Ġsorting Ġwith Ġlamb das ĊĊĠ Ġval Ġnames Ġ= ĠarrayOf (" ZZ ZZ ZZ ", Ġ" BB ", Ġ" A ", Ġ" CCCC ", Ġ" EE EEE ") ĊĠ Ġnames . sorted () Ġ// ĠA , ĠBB , ĠC CCC , ĠE EEEE , ĠZ ZZ ZZ Z ĊĊĠ Ġval Ġnames By Length Ġ= Ġnames . sorted With ( compare By Ġ{ ĊĠĠĠ Ġ- it . length ĊĠ Ġ}) ĊĠ Ġprintln ( names By Length ) Ġ// Ġ> Ġ[ ZZ ZZ ZZ , ĠE EEEE , ĠC CCC , ĠBB , ĠA ] ĊĊĠ Ġ// ĠIter ating Ġover Ġcollections Ġwith Ġlamb das ĊĊĠ Ġval Ġvalues Ġ= ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠ Ġvalues . forEach Ġ{ ĊĠĠĠ Ġprintln ("$ it : Ġ${ it Ġ* Ġit }") ĊĠ Ġ} ĊĠ Ġ// Ġ> Ġ 1 : Ġ 1 ĊĠ Ġ// Ġ> Ġ 2 : Ġ 4 ĊĠ Ġ// Ġ> Ġ 3 : Ġ 9 ĊĠ Ġ// Ġ> Ġ 4 : Ġ 1 6 ĊĠ Ġ// Ġ> Ġ 5 : Ġ 2 5 ĊĠ Ġ// Ġ> Ġ 6 : Ġ 3 6 ĊĊĠ Ġvar Ġprices Ġ= ĠlistOf ( 1 . 5 , Ġ 1 0 . 0 , Ġ 4 . 9 9 , Ġ 2 . 3 0 , Ġ 8 . 1 9 ) ĊĊĠ Ġval Ġlarge Prices Ġ= Ġprices . filter Ġ{ ĊĠĠĠ Ġit Ġ> Ġ 5 . 0 ĊĠ Ġ} ĊĠ Ġprintln ( large Prices ) Ġ// Ġ> Ġ[ 1 0 . 0 , Ġ 8 . 1 9 ] ĊĊĠ Ġval Ġsale Prices Ġ= Ġprices . map Ġ{ ĊĠĠĠ Ġit Ġ* Ġ 0 . 9 ĊĠ Ġ} ĊĠ Ġprintln ( sale Prices ) Ġ// Ġ> Ġ[ 1 . 3 5 , Ġ 9 . 0 , Ġ 4 . 4 9 1 0 0 0 0 0 0 0 0 0 0 0 0 5 , Ġ 2 . 0 7 , Ġ 7 . 3 7 0 9 9 9 9 9 9 9 9 9 9 9 9 6 ] ĊĊĠ Ġval Ġuser Input Ġ= ĠlistOf (" 0 ", Ġ" 1 1 ", Ġ" h aha ", Ġ" 4 2 ") ĊĠ Ġval Ġnumbers Ġ= Ġuser Input . map Ġ{ ĊĠĠĠ Ġit . toInt OrNull () ĊĠ Ġ} ĊĠ Ġprintln ( numbers ) Ġ// Ġ> Ġ[ 0 , Ġ 1 1 , Ġnull , Ġ 4 2 ] ĊĊĠ Ġval Ġnumbers 2 Ġ= Ġuser Input . map NotNull Ġ{ ĊĠĠĠ Ġit . toInt OrNull () ĊĠ Ġ} ĊĠ Ġprintln ( numbers 2 ) Ġ// Ġ> Ġ[ 0 , Ġ 1 1 , Ġ 4 2 ] ĊĊĠ Ġvar Ġsum Ġ= Ġprices . fold ( 0 . 0 ) Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠ Ġa Ġ+ Ġb ĊĠ Ġ} ĊĠ Ġprintln ( sum ) Ġ// Ġ> Ġ 2 6 . 9 8 0 0 0 0 0 0 0 0 0 0 0 0 4 ĊĊĠ Ġsum Ġ= Ġprices . reduce Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠ Ġa Ġ+ Ġb ĊĠ Ġ} ĊĠ Ġprintln ( sum ) Ġ// Ġ> Ġ 2 6 . 9 8 0 0 0 0 0 0 0 0 0 0 0 0 4 ĊĊĠ Ġval Ġstock Ġ= Ġmap Of ( 1 . 5 Ġto Ġ 5 , Ġ 1 0 . 0 Ġto Ġ 2 , Ġ 4 . 9 9 Ġto Ġ 2 0 , Ġ 2 . 3 0 Ġto Ġ 5 , Ġ 8 . 1 9 Ġto Ġ 3 0 ) ĊĠ Ġvar Ġstock Sum Ġ= Ġ 0 . 0 ĊĠ Ġstock . forEach Ġ{ ĊĠĠĠ Ġstock Sum Ġ+= Ġit . key Ġ* Ġit . value ĊĠ Ġ} ĊĊĠ Ġprintln ( stock Sum ) Ġ// Ġ> Ġ 3 8 4 . 5 Ċ } Ċ