ProAndroidDev

The latest posts from Android Professionals and Google Developer Experts.

Follow publication

Kotlin’s :: Operator Explained

Sandeep Kella
ProAndroidDev
Published in
3 min readJul 20, 2024

Hey there, fellow Android developer! 🌟 Today, we’re diving into the world of Kotlin and exploring the :: operator, also known as the callable reference operator. Think of this as a magic wand that lets you refer to functions, properties, and constructors in a super neat way. Ready? Let's get started!

What is the :: Operator?

Imagine you’re at a party (because coding is a party, right?) and you want to introduce your friend to someone. Instead of explaining all their qualities and details, you simply point to them and say, “That’s my friend, Alex!” That’s exactly what the :: operator does. It points to functions, properties, or constructors without calling them directly.

Why Use the :: Operator?

Using the :: operator can make your code cleaner and more readable. It's like having a shortcut to access your favorite features in an app. You don't have to go through all the steps every time; just click the shortcut, and you're there!

Callable References: Functions

Let’s start with functions. Suppose you have a simple function that greets a user:

fun greet(name: String) {
println("Hello, $name!")
}

Now, if you want to refer to this function without calling it, you can use the :: operator:

val greeter = ::greet

Here, greeter is a reference to the greet function. You can use it later to call the function, just like you'd use a nickname to call a friend:

greeter("Alice") // Prints: Hello, Alice!

Callable References: Properties

Callable references work with properties too. Think of properties as your favorite snacks stored in jars. Instead of grabbing the snack directly, you point to the jar.

val favoriteSnack = "Chips"
val snackReference = ::favoriteSnack

Now, you can access the property via the reference:

println(snackReference.get()) // Prints: Chips
snackReference.set("Cookies")
println(favoriteSnack) // Prints: Cookies

Callable References: Constructors

Callable references can also be used with constructors. Imagine you have a recipe for making a cake. Instead of writing down the entire recipe each time, you point to it and say, “That’s my cake recipe!”

Here’s a class with a constructor:

class Cake(val flavor: String)
val cakeFactory = ::Cake

Now, you can use cakeFactory to create instances of Cake:

val chocolateCake = cakeFactory("Chocolate")
println(chocolateCake.flavor) // Prints: Chocolate

Using Callable References in Higher-Order Functions

Callable references really shine when used with higher-order functions (functions that take other functions as parameters). Imagine you’re organizing a playlist and you want to add some songs (functions) to it. Instead of adding each song manually, you can refer to them using the :: operator.

Here’s an example:

fun playSong(song: String) {
println("Playing: $song")
}

fun managePlaylist(action: (String) -> Unit, song: String) {
action(song)
}
val songReference = ::playSong
managePlaylist(songReference, "Despacito") // Prints: Playing: Despacito

Real-World Example: Sorting a List

Let’s bring it all together with a real-world example. Imagine you have a list of names, and you want to sort them. Instead of writing a sorting algorithm, you can use a callable reference.

val names = listOf("Charlie", "Alice", "Bob")
val sortedNames = names.sortedWith(compareBy(String::length))
println(sortedNames) // Prints: [Bob, Alice, Charlie]

Here, String::length is a callable reference to the length property of the String class. It's like saying, "Hey, sort these names by their length!"

Wrapping Up

And there you have it! The :: operator in Kotlin is a powerful tool that makes your code cleaner and more expressive. Whether you're pointing to functions, properties, or constructors, callable references can simplify your code and make it more fun to write.

So the next time you’re coding, think of the :: operator as your magic wand. Point to what you need, and let the magic happen! 🪄✨

Happy coding! 🚀

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Published in ProAndroidDev

The latest posts from Android Professionals and Google Developer Experts.

Written by Sandeep Kella

Android dev by day, tech writer by night. Breaking down code so even my cat could understand it. Join me on Medium for fun, geeky, and practical Android tips!

Responses (2)

Write a response