Resources

Introduction

Last week, we went over higher order functions in Kotlin. We learned how higher order functions can accept functions as parameters and are also able to return functions. This week, we will take a look at lambdas. Lambdas are another type of function and they are very popular in the functional programming world.



Logic & Data

Computer programs are made up of two parts: logic and data. Usually, logic is described in functions and data is passed to those functions. The functions do things with the data, and return a result. When we write a function we would typically create a named function. As we saw last week, this is a typical named function:

fun hello(name: String): String {
return "Hello, $name"
}

Then you can call this function:

fun main() {
println(hello("Matt"))
}

Which gives us the result:

Hello, Matt

Functions as Data

There is a concept in the functional programming world where functions are treated as data. Lambdas (functions as data) can do the same thing as named functions, but with lambdas, the content of a given function can be passed directly into other functions. A lambda can also be assigned to a variable as though it were just a value.

Lambda Syntax

Lambdas are similar to named functions but lambdas do not have a name and the lambda syntax looks a little different. Whereas a function in Kotlin would look like this:

fun hello() {
return "Hello World"
}

The lambda expression would look like this:

{ "Hello World" }

Here is an example with a parameter:

fun(name: String) {
return "Hello, ${name}"
}

The lambda version:

{ name: String -> "Hello, $name" }

You can call the lambda by passing the parameter to it in parentheses after the last curly brace:

{ name: String -> "Hello, $name" }("Matt")

It’s also possible to assign a lambda to a variable:

val hello = { name: String -> "Hello, $name" }

You can then call the variable the lambda has been assigned to, just as if it was a named function:

hello("Matt")

Lambdas provide us with a convenient way to pass logic into other functions without having to define that logic in a named function. This is very useful when processing lists or arrays of data. We’ll take a look at processing lists with lambdas in the next post!

Views: 127

Happy 10th year, JCertif!

Notes

Welcome to Codetown!

Codetown is a social network. It's got blogs, forums, groups, personal pages and more! You might think of Codetown as a funky camper van with lots of compartments for your stuff and a great multimedia system, too! Best of all, Codetown has room for all of your friends.

When you create a profile for yourself you get a personal page automatically. That's where you can be creative and do your own thing. People who want to get to know you will click on your name or picture and…
Continue

Created by Michael Levin Dec 18, 2008 at 6:56pm. Last updated by Michael Levin May 4, 2018.

Looking for Jobs or Staff?

Check out the Codetown Jobs group.

 

Enjoy the site? Support Codetown with your donation.



InfoQ Reading List

New Relic Release April 2024 Java Report

New Relic have launched the Spring 2024 edition of their report on the state of the Java ecosystem. This report is different from all of the developer studies because it is based on directly-reported data from millions of production JVMs, and is not self-reported.

By Ben Evans

InfoQ Dev Summit Boston: Save up to 60% with Our Special Memorial Day Sale

InfoQ Dev Summit Boston (June 24-25) is running a special Memorial Day Sale with significant discounts of up to 60% off. This is your chance to learn actionable insights from 20+ senior software practitioners on today's critical development priorities. Get clarity on Generative AI, security, modern web apps, and more from senior software practitioners with two days of technical talks.

By Artenisa Chatziou

Amazon EC2 C7i-flex Instances: Price-Performance Benefits for Compute-Intensive Workloads

AWS has announced the general availability of Amazon EC2 C7i-flex instances, which, according to the company, deliver up to 19% better price performance compared to C6i instances.

By Steef-Jan Wiggers

Article: Accelerating Technical Decision-Making by Empowering ICs with Engineering Strategy

Carta harnesses the power of a small group of senior engineers called navigators to bridge the gap between global strategy and local decision-making, using a written engineering strategy. Navigators replace a need for consensus and boost velocity by combining technical context, domain context, strategic alignment, and judgment to make engineering decisions quickly.

By Dan Fike, Shawna Martell

Presentation: From Mainframes to Microservices - the Journey of Building and Running Software

Suhail Patel discusses the platforms and software patterns that made microservices popular, and how virtual machines and containers have influenced how software is built and run at scale today.

By Suhail Patel

© 2024   Created by Michael Levin.   Powered by

Badges  |  Report an Issue  |  Terms of Service