So my colleague mentioned operator overloading, and how much fun it is.
So I wrote a little test.
It works pretty good, but for infix functions it has a very high "syntactic sugar" and less about "real" operator overloading.
Also, the reference page in [1] indicates that for Infix functions, the precedence has fixed rules that do not (always) conform to precedence that we would assume.
My colleague told me that a number of infix functions were created for QueryDSL, so we could write a semblance of SQL in Kotlin, but the precedence tends to screw things up.
We removed these infix functions from our source code again.
So, use sparingly and only when it makes sense. For example if it makes your code a magnitude easier to read/reason about and preferable with as small a scope as possible.
References
- [1] KotlinLang - Functions
- https://kotlinlang.org/docs/functions.html#function-scope
- Baeldung - Operator Overloading in Kotlin
- https://www.baeldung.com/kotlin/operator-overloading
- Baeldung - Infix Functions in Kotlin
- https://www.baeldung.com/kotlin/infix-functions
No comments:
Post a Comment