Статическая типизация — не панацея
Что выведет этот кусочек кода на Kotlin?
fun main() {
data class SomeClass(val someValue: Int)
val someNull = null
println(someNull + SomeClass(12))
}
Ответ
Выведет nullSomeClass(someValue=12)
. Почти как в JS:)
Все благодаря выводу типов: компилятор находит расширение operator fun String?.plus(other: Any?)
, вызывает у обоих аргументов toString()
и склеивает их.
Хорошо хоть, узнал это не из продакшен-кода, а из познавательного видео, в котором мужик рассказывает про “переопределение” оператора сложения для nullable типов.
Комментарии