gpt4 book ai didi

scala - 为什么我不能在 Scala 中将 String 的实例转换为 Iterable[Char]

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

此行将失败:

"Hello".asInstanceOf[Iterable[Char]]

但是我可以将 String 的实例传递给这样的方法:
def someMethod(input: Iterable[Char]): Unit = { ... }
someMethod("Hello")

为什么?

最佳答案

String不延长 Iterable[Char] .这解释了为什么类型转换失败。

但是,Scala Predef defines an implicit conversion来自 StringWrappedString , 和 WrappedString确实扩展 Iterable[Char] .这就是为什么你的第二个例子有效。编译器添加了转换,所以编译后的代码看起来更像这样:

someMethod(wrapString("Hello"))

如果您想知道为什么要这样做,那是因为 String实际上是 java.lang.String来自 Java 标准库(出于 Java 兼容性原因),所以 WrappedString被创建为 adapter制作 String适合 Scala 集合库,并添加了隐式转换以使其几乎无缝。

关于scala - 为什么我不能在 Scala 中将 String 的实例转换为 Iterable[Char],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51980442/

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