绑定在集合类型中的 Scala 视图
Scala view bound in collection type
我有一组可以隐式转换为字符串的元素。如何让它看起来像一个实际的字符串集合?
def foo[A <% String](it: Iterator[A]) = {
val its: Iterator[String] = ???
}
(我知道视图边界已被弃用,但让我们假设 foo
的签名是固定的,覆盖了遗留方法。)
我想出的一个解决方案是在 Iterator[A]
和 Iterator[String]
之间定义一个简单的转换器 class,但这对于其他集合 classes 来说可能很麻烦许多抽象方法。是否有处理这种情况的标准方法,无需大量额外代码?
A <% String
只是隐式 A => String
的糖分
def foo[A](it: Iterator[A])(conv: A => String) = {
val its: Iterator[String] = it map conv
}
(如果您真的想使用 <%
语法,您可以使用 implicitly[A => String]
获取块内的函数)
我有一组可以隐式转换为字符串的元素。如何让它看起来像一个实际的字符串集合?
def foo[A <% String](it: Iterator[A]) = {
val its: Iterator[String] = ???
}
(我知道视图边界已被弃用,但让我们假设 foo
的签名是固定的,覆盖了遗留方法。)
我想出的一个解决方案是在 Iterator[A]
和 Iterator[String]
之间定义一个简单的转换器 class,但这对于其他集合 classes 来说可能很麻烦许多抽象方法。是否有处理这种情况的标准方法,无需大量额外代码?
A <% String
只是隐式 A => String
def foo[A](it: Iterator[A])(conv: A => String) = {
val its: Iterator[String] = it map conv
}
(如果您真的想使用 <%
语法,您可以使用 implicitly[A => String]
获取块内的函数)