给定以下数据类:
data class Coords(val x: Int, val y: Int) {
companion object CoordsOps {
private val shiftTable: Map<Direction, Pair<Int, Int>> = mapOf(
Direction.North to Pair(0, 1),
Direction.East to Pair(1, 0),
Direction.South to Pair(0, -1),
Direction.West to Pair(-1, 0)
)
private operator fun Coords.plus(increment: Pair<Int, Int>): Coords =
Coords(x + increment.first, y + increment.second)
fun Coords.shift(direction: Direction): Coords = this + shiftTable.getValue(direction)
}
}
我无法从该对象外部使用扩展函数shift()
。我想使用Coords.shift(direction)
。
我做错了什么?
最佳答案
你应该可以。我完全复制了您的代码,并且能够从另一个文件调用扩展函数 shift。
也许您错过了导入?或者叫法不对?试试这个
import <your_package>.Coords.CoordsOps.shift
val y = Coords(3, 4).shift(Direction.East)
关于android - 从其伴生对象扩展数据类的函数时不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63984683/