gpt4 book ai didi

scala - 字符串被视为序列

转载 作者:行者123 更新时间:2023-12-04 19:34:25 26 4
gpt4 key购买 nike

在丹尼尔在这篇文章中的回答中:
What are Scala context and view bounds?
介绍了一种将字符串作为 Scala 集合处理的方法。

handling String and Array, which are Java classes, like they were Scala >collections. For example:

def f[CC <% Traversable[_]](a: CC, b: CC): CC = if (a.size < b.size) a else b


我想知道在 Scala 标准库中哪里可以找到此功能。
另一个与上述帖子相关的简单问题:
我一直看到使用的速记“ev”,尤其是在与上下文边界或 View 边界示例相关时:

def g[A](a: A)(implicit ev: B[A]) = h(a)


它代表什么?
先感谢您。
干杯

最佳答案

I would like to know were I can find this functionality in the Scala standard libs.



Scala 为 java.lang.String 提供了一个包装器叫 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扩展 IndexedSeq[Char] ,这就是为什么它遵守可转换为可遍历的 View 边界请求。

I keep seeing the shorthand "ev" used, especially when related to context bounds or view bounds, what does it stand for?



它是“证据”的缩写。如果您考虑一下,当您请求某种隐式参数在范围内时,编译器会要求您提供操作可以发生的证据。

关于scala - 字符串被视为序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41570444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com