在Scala中创建CanBuildFrom

时间:2016-09-28 15:48:27

标签: scala implicit

我开始学习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,但剩下的就超出了我。或许还有其他一些问题。

1 个答案:

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