我如何将Kotlin字符串插值扩展到与自定义类一起使用



从我在文档中阅读的内容中,我的理解是,kotlin中的字符串插值工作使得此代码:

val n = 5 println("N is $n")

转化为

StringBuilder().append("N is ").append(n).toString()

对于StringBuilder.Append((具有实现的类型,这是很好的nandy。我现在希望使用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!

我没有设法在文档中找到以下方式...建议?

谢谢!

您可以通过覆盖foo的to绳来实现这一目标。

class Foo(val a: Int = 0, val b: Float = 0f) {
    override fun toString(): String {
        return "A = $a, B = $b"
    }
}

最新更新