Scala视图绑定在集合类型中

时间:2015-01-10 07:48:33

标签: scala implicit-conversion

我有一组可隐式转换为String的元素。如何使它看起来像一个字符串的实际集合?

def foo[A <% String](it: Iterator[A]) = {
  val its: Iterator[String] = ???
}

(我知道视图边界已被弃用,但让我们假设foo的签名是固定的,覆盖了遗留方法。)

我可以提出的一个解决方案是在Iterator[A]Iterator[String]之间定义一个简单的转换器类,但对于具有许多抽象方法的其他集合类来说,这可能很麻烦。是否有一种处理这种情况的标准方法,没有重要的额外代码?

1 个答案:

答案 0 :(得分:1)

A <% String只是隐含A => String

的糖
def foo[A](it: Iterator[A])(conv: A => String) = {
  val its: Iterator[String] = it map conv
}

(如果您真的想使用<%语法,可以使用implicitly[A => String]获取块内的功能。