是否可以在类的伴侣对象中定义和使用扩展功能?
在此示例中,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")
如果可能,如何?如果不是,为什么不呢?
由于只需要该函数作为parse
的帮助程序,因此应在它旁边声明它。
companion object {
private fun String.removeWhitespace() = replace("\\s+".toRegex(), "")
fun parse(text: String?): Point? {
...