Book Image

Programming Kotlin

Book Image

Programming Kotlin

Overview of this book

Quickly learn the fundamentals of the Kotlin language and see it in action on the web. Easy to follow and covering the full set of programming features, this book will get you fluent in Kotlin for Android.
Table of Contents (20 chapters)
Programming Kotlin
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Customer Feedback
Preface

Function-literal receivers


Recall from the previous chapter on functions that the receiver of a function is the instance that corresponds to the this keyword when inside the function body. In Kotlin, function parameters can be defined to accept a receiver when they are invoked. We do that using the following syntax:

    fun foo(fn: String.() -> Boolean): Unit 

Then, when we invoke the function fn in the foo function body, we are required to invoke it on an instance of string, as you can see if we complete the implementation of foo:

    fun foo(fn: String.() -> Boolean): Unit { 
      "string".fn() 
    } 

This feature also works with anonymous functions:

    val substring = fun String.(substr: String): Boolean =
    this.contains(substr) 
    "hello".substring("ello") 

You might prefer the anonymous function syntax if you wish to assign a function to a variable, as earlier. This is because a receiver cannot be specified with a function literal.

Function...