fun Ġmain () Ġ{ ĊĠĠĠ Ġ// lambda ĊĠĠĠ Ġvar Ġfun Var :( String ) Ġ-> ĠUnit Ġ= Ġ{ text : ĠString Ġ-> Ġprintln ( text )} ĊĠĠĠĠĠĠĠ Ġ// var Ġ Ġ// type ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// lambda ĊĊĠĠĠ Ġfun Var (" Hello ĠM am ") ĊĊĊĠĠĠ Ġ// Calling Ġlamb das Ġright Ġaway Ġwhile Ġdefining ĊĠĠĠ Ġprintln ({ x : Int Ġ-> Ġx * 3 }( 5 )) ĊĊĊĠĠĠ Ġ// Lambda Ġare Ġso Ġuseful Ġthat ĠKotlin Ġhas Ġa Ġcouple Ġof Ġinteresting Ġconventions Ġto Ġsimplify Ġtheir Ġuse . ĊĠĠĠ Ġ// The Ġfirst Ġone Ġis Ġthe Ġimplicit Ġparameter Ġit . ĊĊĠĠĠ Ġ// If Ġboth Ġthese Ġconditions Ġare Ġtrue : ĊĊĠĠĠ Ġ// the Ġcompiler Ġalready Ġknows Ġthe Ġsignature Ġof Ġthe Ġlambda , Ġor Ġcan Ġfigure Ġit Ġout ĊĠĠĠ Ġ// the Ġlambda Ġhas Ġonly Ġone Ġargument ĊĊĠĠĠ Ġ// Then Ġyou Ġcan Ġomit Ġdeclaring Ġthe Ġparameter Ġof Ġthe Ġlambda Ġand Ġuse Ġthe Ġimplicit Ġparameter Ġit . ĊĊĠĠĠ Ġvar Ġsimple Fun : Ġ( Int ) Ġ-> ĠInt Ġ= Ġ{ Ġit Ġ+ Ġ 2 Ġ} ĊĠĠĠ Ġ// Ġthis Ġis Ġequivalent Ġto Ġthe Ġfollowing Ġdeclaration ĊĠĠĠ Ġ// Ġvar Ġsimple Fun : Ġ( Int ) Ġ-> ĠInt Ġ= Ġ{ i : ĠInt Ġ-> Ġi Ġ+ Ġ 2 Ġ} ĊĊĠĠĠ Ġprintln ( simple Fun ( 2 )) ĊĊĊĠĠĠ Ġ// Another Ġform Ġof Ġpassing Ġlamb das Ġwhen Ġlambda Ġis Ġlast Ġparameter Ġin Ġfunction Ġlike Ġdefined Ġin Ġdouble Ġmethod ĊĠĠĠ Ġ// The ĠSE COND ĠCON VENT ION Ġapplies Ġonly Ġif Ġa Ġlambda Ġis Ġpassed Ġas Ġargument Ġof Ġthe Ġlast Ġparameter Ġof Ġa Ġfunction . ĊĠĠĠ Ġ// ĠIn Ġsuch Ġcases Ġyou Ġcan Ġwrite Ġthe Ġlambda Ġoutside Ġthe Ġfunction Ġparentheses . ĊĠĠĠ Ġ// ĠIf Ġthe Ġlambda Ġis Ġthe Ġonly Ġargument Ġof Ġthe Ġfunction , Ġyou Ġcan Ġomit Ġthe Ġparentheses Ġal together . ĊĊĠĠĠ Ġ// case Ġ 1 ĊĠĠĠĠĠ Ġvar Ġresult _ 1 Ġ= Ġdouble Number Ġ( 5 ){ ĊĠĠĠĠĠ Ġit * 2 ĠĠ Ġ// special Ġparameter Ġit Ġfor Ġlamb das ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// case Ġ 2 ĊĠĠĠ Ġvar Ġresult _ 2 Ġ= Ġdouble Number Ġ{ ĊĠĠĠĠĠĠĠ Ġit * 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// In Ġthe Ġfirst Ġcase , Ġwe Ġsupply Ġto Ġdouble Ġboth Ġan Ġargument Ġfor Ġnumber Ġ( i . e ., Ġ 5 ) Ġand Ġa Ġlambda Ġfor Ġcalculation . ĊĠĠĠ Ġ// ĠFor Ġthe Ġsecond Ġone , Ġwe Ġjust Ġsupply Ġa Ġlambda Ġbecause Ġwe Ġtake Ġadvantage Ġof Ġthe Ġdefault Ġargument Ġof Ġnumber . ĊĠĠĠ Ġ// ĠIn Ġboth Ġcases Ġwe Ġwrite Ġthe Ġlambda Ġoutside Ġthe Ġparentheses , Ġin Ġthe Ġsecond Ġcase Ġwe Ġcan Ġomit Ġthe Ġparentheses Ġal together . ĊĊĠĠĠ Ġprintln ( result _ 1 ) ĊĠĠĠ Ġprintln ( result _ 2 ) Ċ } ĊĊ Ċ // The Ġfunction Ġdouble Ġhas Ġas Ġparameters Ġan ĠInt Ġand Ġa Ġfunction . Ċ // ĠThe Ġparameter ĠInt Ġhas Ġa Ġdefault Ġvalue Ġof Ġ 1 . ĠThe Ġfunction Ġhas Ġone Ġparameter Ġof Ġtype ĠInt Ġand Ġreturn Ġa Ġvalue Ġof Ġtype ĠInt . Ċ // ĠThe Ġfunction Ġdouble Ġreturns Ġwhatever Ġis Ġreturned Ġby Ġthe Ġlambda Ġcalculation Ġmultip lied Ġby Ġ 2 Ċ Ċ // while Ġdefining Ġlambda Ġas Ġargument Ġ, Ġone Ġhas Ġto Ġtell Ġ( lambda ARG )-> ĠreturnType Ġi . e Ġwhat Ġis Ġargument Ġto Ġlambda Ġand Ġwhat Ġis Ċ // return Ġtype . Ċ fun Ġdouble Number ( num : ĠInt Ġ= Ġ 1 , Ġcalculate :( Int )-> ĠInt ): Int Ġ{ ĊĊĠĠĠ Ġreturn Ġcalculate ( num ) Ġ* Ġ 2 Ċ } Ċ Ċ fun Ġtriple ( num : Int , Ġtri pl ify :( Int )-> ĠInt ): Int Ġ{ ĊĠĠĠ Ġreturn Ġtri pl ify ( num ) Ġ* Ġ 3 Ċ }