Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What makes the String class in Kotlin to be able to work with square brackets?

In Kotlin you can do something like this:

val s: String = "Hey"
println(s[1])

or simply:

println("Hey"[1])

and you will print e.

But what if you want to extend this behavior to your own classes? What interface do you need to implement to accomplish this syntax?

I looked at String's supertypes and only found Comparable<String> and CharSequence, neither of which had any other supertypes themselves, so my quest ended early.

For example in Python, by defining a method called __getitem__ in a class, you can bestow the objects of that class the ability to be used with square brackets syntax like this a[i]; I was wondering how this was possible in Kotlin.

Thanks in advance.

like image 288
SMMH Avatar asked Jan 26 '26 13:01

SMMH


1 Answers

You can use Kotlin's operator overloading, specifically the overloading for indexed access operators.

The syntax "Hey"[1] is just an alias for "Hey".get(1) (if not on the left-hand side of an assignment, where it would be an alias for "Hey".set(1, ...)).

like image 88
Karsten Gabriel Avatar answered Jan 29 '26 01:01

Karsten Gabriel



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!