根据我在文档中阅读的内容,据我了解,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!
我没有设法在文档中找到解决此问题的方法...建议?
谢谢!
答案 0 :(得分:3)
您可以通过覆盖Foo的toString来实现。
class Foo(val a: Int = 0, val b: Float = 0f) {
override fun toString(): String {
return "A = $a, B = $b"
}
}