我开始学习Scala并遇到.map
的问题。我想我需要手动定义一个CanBuildFrom,但我不知道该怎么做。我已经看了一些介绍,但是虽然我理解了目的,但我无法弄清楚实现。
因此,为了缩短我的代码,我已经定义了一个类型别名。
type Dice = Vector[(Int,Int)]
我创建了一个隐式类来向该Vector添加方法。
implicit class DiceMethods(dice: Dice){
private def d(x : Int) = // some method
def roll : Dice = dice map( case (x: Int, y: Int) => (0, d(x) + y) )
}
当我使用map
时,编译器对我尖叫。所以我想,我需要一个implicit object someFunkyName extends CanBuildFrom
,但剩下的就超出了我。或许还有其他一些问题。
答案 0 :(得分:1)
您无需担心CanBuildFrom
使用map { case .... }
代替map ( case ...)
implicit class DiceMethods(dice: Dice){
private def d(x : Int) = // some method
def roll : Dice = dice map { case (x: Int, y: Int) => (0, d(x) + y) }
}