丹尼尔在这篇文章中回答: What are Scala context and view bounds?
提供了一种将String作为Scala集合处理的方法。
处理String和Array,它们是Java类,就像它们是Scala>集合一样。例如:
def f [CC<%Traversable [_]](a:CC,b:CC):CC = if(a.size< b.size)a else b
我想知道在Scala标准库中我可以在哪里找到此功能。
与上述帖子相关的另一个简单问题:
我一直看到使用的简写“ev”,特别是在与上下文边界或视图边界示例相关时:
def g [A](a:A)(隐含ev:B [A])= h(a)
它代表什么?
提前谢谢你。 干杯
答案 0 :(得分:4)
我想知道我是否可以在Scala中找到此功能 标准库。
Scala提供了一个名为java.lang.String
的{{1}}包装器:
WrappedString
当你跑步时:
final class WrappedString(val self: String) extends AbstractSeq[Char]
with IndexedSeq[Char]
with StringLike[WrappedString]
编译器通过f("he", "hello")
隐式将字符串文字转换为WrappedString
的实例:
Predef.wrapString
反过来,f[String]("he", "hello")({
((s: String) => scala.this.Predef.wrapString(s))
});
扩展WrappedString
,这就是它遵守视图边界请求可转换为可遍历的原因。
我一直看到使用的简写“ev”,特别是在与之相关时 上下文边界或视图边界,它代表什么?
它是“证据”的缩写。如果你考虑一下,当你请求某种隐式参数在范围内时,编译器要求你提供操作可能发生的证据。