如何在同伴对象中使用扩展功能

问题描述 投票:1回答:1

是否可以在类的伴侣对象中定义和使用扩展功能?

在此示例中,removePadding()是在Point.parse()中使用的扩展功能。

data class Point(private var x: Int, private var y: Int) {
    companion object {
        fun parse(text: String?) = text?.removePadding()
            ?.let { "(\\d+),(\\d+)".toRegex().find(it) }
            ?.mapNotNull { it.toIntOrNull() }
            ?.let { Point(it[0], it[1]) }

        // define removePadding() here?
    }

    // define removePadding() here?
}

扩展功能removePadding()可能看起来像:

fun String.removePadding() = this.replace("\\s+".toRegex())

[parse函数可以称为:

val one = Point.parse("1, 7")

如果可能,如何?如果不是,为什么不呢?

kotlin extension-methods
1个回答
0
投票

由于只需要该函数作为parse的帮助程序,因此应在它旁边声明它。

companion object {
    private fun String.removeWhitespace() = replace("\\s+".toRegex(), "")

    fun parse(text: String?): Point? {
        ...
© www.soinside.com 2019 - 2024. All rights reserved.