Site icon C1CTech

Kotlin Infix Function Call

<p>In this article&comma; you will learn about infix notation to call a function in Kotlin with the help of examples&period;<&sol;p>&NewLine;<p>Kotlin supports function calls of a special kind&comma; called <span style&equals;"color&colon; &num;008000&semi;"><strong>infix<&sol;strong><&sol;span> calls&period;<&sol;p>&NewLine;<p>In Kotlin&comma; functions marked with <span style&equals;"color&colon; &num;008000&semi;"><strong>infix<&sol;strong><&sol;span> keyword can also be called using <span style&equals;"color&colon; &num;008000&semi;"><strong>infix notation<&sol;strong><&sol;span> means calling without using parenthesis and dot&period;<&sol;p>&NewLine;<p>Before you learn how to create a function having infix notation&comma; let&&num;8217&semi;s explore some of the commonly used built-in infix functions&period;<&sol;p>&NewLine;<p>Following are a few common examples of infix notations in Kotlin&colon;<&sol;p>&NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Infix Notation Example &&num;8211&semi; Creating a Map<&sol;strong><&sol;span><&sol;h4>&NewLine;<pre>fun main&lpar;args&colon; Array&rpar; &lbrace;&NewLine;<strong><span style&equals;"color&colon; &num;008000&semi;">&NewLine; &sol;&sol;to&lpar;&rpar; is an infix function<&sol;span><&sol;strong>&NewLine;<strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;used while working with Map<&sol;span><&sol;strong>&NewLine; val myMap &equals; mapOf&lpar;1 <span style&equals;"color&colon; &num;0000ff&semi;"><strong>to<&sol;strong><&sol;span> "one"&comma; 2 <strong><span style&equals;"color&colon; &num;0000ff&semi;">to<&sol;span><&sol;strong> "two"&comma; 3 <span style&equals;"color&colon; &num;0000ff&semi;"><strong>to<&sol;strong><&sol;span> "three"&rpar;&NewLine; for &lpar;value in myMap&period;values&rpar; &lbrace;&NewLine; println&lpar;value&rpar;&NewLine; &rcub;&NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>one&NewLine;two&NewLine;three<&sol;pre>&NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Infix Notation Example &&num;8211&semi; Boolean Operators &lpar; and&comma;  or &rpar;<&sol;strong><&sol;span><&sol;h4>&NewLine;<pre>fun main&lpar;args&colon; Array&rpar; &lbrace;&NewLine;&NewLine; val a &equals; true&NewLine; val b &equals; false&NewLine; var result&colon; Boolean&NewLine;&NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;or&comma; and are infix functions&NewLine;<&sol;strong><strong> &sol;&sol;performs logical 'and'&comma;'or' operations between the two values<&sol;strong><&sol;span>&NewLine; result &equals; a <strong><span style&equals;"color&colon; &num;0000ff&semi;">or<&sol;span><&sol;strong> b <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol; a&period;or&lpar;b&rpar;<&sol;span><&sol;strong>&NewLine; println&lpar;"result &equals; &dollar;result"&rpar;&NewLine;&NewLine; result &equals; a <strong><span style&equals;"color&colon; &num;0000ff&semi;">and<&sol;span><&sol;strong> b <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol; a&period;and&lpar;b&rpar;<&sol;span><&sol;strong>&NewLine; println&lpar;"result &equals; &dollar;result"&rpar;&NewLine; &NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>result &equals; true&NewLine;result &equals; false<&sol;pre>&NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Infix Notation Example &&num;8211&semi; String&period;matches&lpar;&rpar;<&sol;strong><&sol;span><&sol;h4>&NewLine;<pre>fun main&lpar;args&colon; Array&rpar; &lbrace;&NewLine; val regex &equals; Regex&lpar;"&lbrack;tT&rsqb;rue&vert;&lbrack;yY&rsqb;es"&rpar;&NewLine; val str &equals; "Yes"&NewLine;&NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;matches is an infix function<&sol;strong><&sol;span>&NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;used while working with String<&sol;strong><&sol;span>&NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;returns &grave;true&grave; if the string matches the given regular expression&period;<&sol;strong><&sol;span>&NewLine; val result &equals; str matches regex <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;str&period;matches&lpar;regex&rpar;<&sol;span><&sol;strong>&NewLine; print&lpar;"result &equals; &dollar;result"&rpar;&NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>result &equals; true<&sol;pre>&NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Infix Notation Example &&num;8211&semi; Range Operators &lpar;until&comma; downTo&comma; step&rpar;<&sol;strong><&sol;span><&sol;h4>&NewLine;<pre>fun main&lpar;args&colon; Array&rpar; &lbrace;&NewLine;&NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;until&comma; downTo&comma; step are infix functions <&sol;strong><&sol;span>&NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;used while working with Range<&sol;strong><&sol;span>&NewLine; print&lpar;"for &lpar;i in 1 until 5&rpar; print&lpar;i&rpar; &equals; "&rpar;&NewLine; for &lpar;i <span style&equals;"color&colon; &num;000000&semi;">in<&sol;span> 1 <span style&equals;"color&colon; &num;0000ff&semi;"><strong>until<&sol;strong><&sol;span> 5&rpar; print&lpar;"&dollar;i "&rpar;&NewLine;&NewLine; println&lpar;&rpar;&NewLine; &NewLine; print&lpar;"for &lpar;i in 10 <span style&equals;"color&colon; &num;000000&semi;">downTo<&sol;span> 1 <span style&equals;"color&colon; &num;000000&semi;">step<&sol;span> 3&rpar; print&lpar;i&rpar; &equals; "&rpar;&NewLine; for &lpar;i <span style&equals;"color&colon; &num;000000&semi;">in<&sol;span> 10 <span style&equals;"color&colon; &num;0000ff&semi;"><strong>downTo<&sol;strong><&sol;span> 1 <strong><span style&equals;"color&colon; &num;0000ff&semi;">step<&sol;span><&sol;strong> 3&rpar; print&lpar;"&dollar;i "&rpar;&NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>for &lpar;i in 1 until 5&rpar; print&lpar;i&rpar; &equals; 1 2 3 4 &NewLine;for &lpar;i in 10 downTo 1 step 3&rpar; print&lpar;i&rpar; &equals; 10 7 4 1<&sol;pre>&NewLine;<h5><&sol;h5>&NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Creating a function with infix notation<&sol;strong><&sol;span><&sol;h4>&NewLine;<p>You can make a function call in Kotlin using infix notation if the function<&sol;p>&NewLine;<&excl;-- WP QUADS Content Ad Plugin v&period; 2&period;0&period;98&period;1 -->&NewLine;<div class&equals;"quads-location quads-ad2" id&equals;"quads-ad2" style&equals;"float&colon;none&semi;margin&colon;0px&semi;">&NewLine;&NewLine;<&sol;div>&NewLine;&NewLine;<ul>&NewLine;<li>is a member function or extension function&period;<&sol;li>&NewLine;<li>has a single parameter&period;<&sol;li>&NewLine;<li>marked with <span style&equals;"color&colon; &num;008000&semi;"><strong>infix<&sol;strong><&sol;span> keyword&period;<&sol;li>&NewLine;<li><span style&equals;"color&colon; var&lpar;--color-text&rpar;&semi;">The parameter must not accept <span style&equals;"color&colon; &num;008000&semi;"><strong>variable number of arguments<&sol;strong><&sol;span> and must have no <span style&equals;"color&colon; &num;008000&semi;"><strong>default value<&sol;strong><&sol;span>&period;<&sol;span><&sol;li>&NewLine;<&sol;ul>&NewLine;<h5><&sol;h5>&NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Example&colon; User-defined function with infix notation<&sol;strong><&sol;span><&sol;h4>&NewLine;<pre>class Math &lbrace;&NewLine; <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;user defined infix member function<&sol;strong><&sol;span>&NewLine; infix fun cube&lpar;n&colon; Int&rpar;&colon; Int &lbrace;&NewLine; val num &equals; n &ast; n &ast; n&NewLine; return num&NewLine; &rcub;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;args&colon; Array&rpar; &lbrace;&NewLine; val math &equals; Math&lpar;&rpar;&NewLine; <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;calling cube&lpar;&rpar; without using infix notation&NewLine; &sol;&sol;math&period;cube&lpar;5&rpar;&NewLine;&NewLine; &sol;&sol;calling cube&lpar;&rpar; using infix notation<&sol;span><&sol;strong>&NewLine; val result &equals; math cube 5 &NewLine; print&lpar;"The cube of number 5 is&colon; " &plus; result&rpar;&NewLine;&rcub;<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<pre>The cube of number 5 is&colon; 125<&sol;pre>&NewLine;<h5><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example explained&colon;<&sol;strong><&sol;span><&sol;h5>&NewLine;<ul>&NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>cube&lpar;&rpar;<&sol;strong><&sol;span> is a member function of class <span style&equals;"color&colon; &num;0000ff&semi;"><strong>Math<&sol;strong><&sol;span>&comma; accepts only one parameter&comma; and marked with <span style&equals;"color&colon; &num;008000&semi;"><strong>infix<&sol;strong><&sol;span> keyword&period;<&sol;li>&NewLine;<li>Now cube&lpar;&rpar; is an infix function we can call it by using infix notation like this&colon; <strong style&equals;"color&colon; var&lpar;--color-text&rpar;&semi;"><span style&equals;"color&colon; &num;008000&semi;">math cube 5 <&sol;span><&sol;strong><span style&equals;"color&colon; var&lpar;--color-text&rpar;&semi;">which is equivalent to<&sol;span><span style&equals;"color&colon; &num;008000&semi;"><strong> math&period;cube&lpar;5&rpar;<&sol;strong><&sol;span><span style&equals;"color&colon; var&lpar;--color-text&rpar;&semi;">&period;<&sol;span><&sol;li>&NewLine;<&sol;ul>&NewLine;&NewLine;

Exit mobile version