I would like to suggest an addition to the component function feature of the Kotlin language. Currently, we can define component functions like
operator fun component1() = this
for example, and this is a really great feature for destructuring declarations.
However, I think it would also make sense to allow a function like:
operator fun componentN(n: Int) = this[n-1]
This would make the system much more flexible for containers like lists and arrays, and would reduce the need for a lot of repeated code. If a class has both a
component1 and a
componentN function then I suggest the
component1 function would take priority, but the
componentN would be used whenever there is not a corresponding operator method for that specific component.
I would be grateful to hear your thoughts.