【问题标题】:Is it possible to have an implicit conversion between a Position(i, j) case class and 2D array indices?是否可以在 Position(i, j) 案例类和二维数组索引之间进行隐式转换?
【发布时间】:2015-09-24 04:18:55
【问题描述】:

假设我有一个board (2D 数组)和以下类:

case class Position(i : Int, j : Int)

典型的场景是这样的:

val v = board(position.i)(position.j)

这让我想知道是否可以在我的 Position 类和 board 之间定义隐式转换,这样我就可以写类似

val x = board(position)

谢谢

【问题讨论】:

  • board 是您之前创建的二维数组,您现在正尝试对其进行索引吗?
  • 这不是你应该使用隐式的方式。使用一个获取位置的 apply 方法为板创建一个类。
  • @Guillaume Massé:我对创建(又一个)类并不感兴趣,因为我唯一想要的是一种更简单的方法来访问数组元素。如果我不使用隐式,我倾向于创建一个辅助方法。

标签: arrays scala implicit-conversion


【解决方案1】:

试试:

implicit class IndexByPos(board: Array[Array[Int]]) {
    def apply(pos: Position) = board(pos.i)(pos.j)
}

不过,我要指出,我同意 @GuillaumeMassé 的评论 - 您可能会发现为 board 定义一个特定的类更有利。

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 2013-05-23
    • 2012-09-16
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    相关资源
    最近更新 更多