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

Time:04-11

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.

CodePudding user response:

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, ...)).

CodePudding user response:

Apparently just having a method get(i: Int) suffices. Interesting...

  • Related