繁体   English   中英

从其同伴 object 扩展数据 class 时没有可见性

[英]No visibility when extending function for a data class from its companion object

给定以下数据 class:

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)
    }
}

我无法从 object 外部使用扩展名 function shift() 。我想使用Coords.shift(direction)

我究竟做错了什么?

你应该能够。 我准确地复制了您的代码,并且能够从另一个文件调用分机号 function shift。

也许你错过了进口? 还是叫错了? 试试这个

import <your_package>.Coords.CoordsOps.shift

val y = Coords(3, 4).shift(Direction.East)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM