gpt4 book ai didi

scala - 字符串 + StringOps = 仿函数?

转载 作者:行者123 更新时间:2023-12-01 13:41:05 26 4
gpt4 key购买 nike

我对 functor 的简单理解是,它只是可以映射到 u.map(f) 上的东西,具有以下约束:-

  • f 必须是函数
  • f 可以返回任意值,类型可以改变
  • map 必须返回相同 Functor 的值,即。容器的形状和结构不得改变。

还有一个例子。

scala> List(1, 2, 3).map(x => s"$x")
res8: List[String] = List(1, 2, 3)

我的问题:-

StringOps 将隐式包装一个 java.lang.String 以使用索引序列常用的操作扩展它 - 例如 map

但以下内容让我有些困惑。

scala> "Tera".map(x => s"$x").map(x => s"$x")
res12: scala.collection.immutable.IndexedSeq[String] = Vector(T, e, r, a)

我假设 map 只会返回一个 scala.Predef.String 而不是 IndexedSeq[String] 因为定义了一个仿函数 是它的形状/结构应该保持不变。

这是否仍然符合 仿函数 的定义,因为 scala.Predef.String IS-A IndexedSeq[String]

最佳答案

不,String 不是仿函数,正是因为它只能包含 Char

Does this still meet the definition of a functor because scala.Predef.String IS-A IndexedSeq[String] ?

它不是(它不是任何东西的 IndexedSeq,它只能隐式转换为 IndexedSeq[Char]),它不是。

关于scala - 字符串 + StringOps = 仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40172060/

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