在 Scala 中创建 CanBuildFrom

Creating a CanBuildFrom in Scala

我开始学习 Scala,但遇到 .map 的问题。我想我需要手动定义一个 CanBuildFrom,但我不知道该怎么做。我看过一些介绍,但虽然我明白了目的,但我无法弄清楚实现方式。

所以为了缩短我的代码,我定义了一个类型别名。

type Dice = Vector[(Int,Int)]

我创建了一个隐式 class 来向该 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,但其余的超出了我的范围。或者可能还有其他问题。

你不用担心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)  }
   }