gpt4 book ai didi

Scala:为什么我不能在字符串集合上映射一个接受 Seq[Char] 的函数

转载 作者:行者123 更新时间:2023-12-03 23:44:27 26 4
gpt4 key购买 nike

我可以定义一个接受 Seq[Char] 的函数

def f(s: Seq[Char]) = s

如果我传入 String,它会起作用:
scala> f("this")
res8: Seq[Char] = this

这意味着我可以在 map 中使用它:
scala> List("this").map(s => f(s))
res9: List[Seq[Char]] = List(this)

那为什么我不能这样做呢?:
scala> List("this").map(f)
<console>:10: error: type mismatch;
found : Seq[Char] => Seq[Char]
required: java.lang.String => ?
List("this").map(f)
^

最佳答案

你不能这样做,因为没有提升隐式转换 A => BF[A] => F[B] .特别是f实际上是 Seq[Char] => Seq[Char] 类型的实例,并且您需要从 String => Seq[Char] 进行隐式转换将生成一个函数 String => Seq[Char] . Scala 不会执行这样的两步隐式转换。

如果你写 s => f(s) , Scala 可以随意摆弄类型,以便 s转换为 Seq[Char]在传递给 f 之前.

关于Scala:为什么我不能在字符串集合上映射一个接受 Seq[Char] 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11811371/

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