Из того, что я прочитал в документации, я понимаю, что интерполяция строк в Kotlin работает так, что этот код:
val n = 5
println("N is $n")
переводится как
StringBuilder().append("N is ").append(n).toString()
, что хорошо для типов, для которых Stringbuilder.append () имеет реализацию. Теперь я хочу использовать механику расширения Kotlin, чтобы добавить свой собственный класс:
class Foo(a: Int = 0, b: Float = 0f) {}
fun Stringbuilder.append(aFoo: Foo) : Stringbuilder! {
return this.append("A = $a, B = $b")
}
чтобы при звонке:
aFoo = Foo(3,5.0f)
println("aFoo parameters are: $aFoo")
выводит: «Параметры aFoo: A = 3, B = 5.0»
К сожалению, похоже, что мое расширение затенено:
public open fun append(obj: Any!): StringBuilder!
Мне не удалось найти в документации способ обойти это ... Предложения?
Спасибо!