当前位置: 首页 > 知识库问答 >
问题:

如何只映射scala中的左边值?

韩鸿
2023-03-14

考虑一个代码:

val some: OneCaseClass Either TwoCaseClass = ???
val r = some.left.map(_.toString)

为什么r可以用[String,TwoCaseClass]类型的产品序列化,而不是用[String,TwoCaseClass]类型的产品序列化?

如何只映射左值?

共有1个答案

谷梁智
2023-03-14

因为这是LeftProjection的返回类型。地图。

map[X](f: (A) ⇒ X): Product with Serializable with Either[X, B]

但这不是问题。如果愿意,可以使用类型归属:

val r: Either[String, TwoCaseClass] = some.left.map(_.toString)

查看文档中的示例:

val l: Either[String, Int] = Left("flower")
val r: Either[String, Int] = Right(12)
l.left.map(_.size): Either[Int, Int] // Left(6)
r.left.map(_.size): Either[Int, Int] // Right(12)
l.right.map(_.toDouble): Either[String, Double] // Left("flower")
r.right.map(_.toDouble): Either[String, Double] // Right(12.0)
 类似资料:
  • 是否可以以与选项类似的方式处理任一选项?在

  • 我在spark中有一个数据集,只有一列,这列是一个Map[String,Any]。我想逐行映射数据集,然后逐键映射映射映射列,计算每个键的值,并使用新数据生成与前一个相同类型的新数据集。 例如: 我想在每个值的末尾加上“”,结果将是一个数据类型的数据集,如下所示: 谢谢Nir

  • 我正在尝试将Scala UDF( 的(嵌套)Scala对象? 代码 Scala自定义项 下沉 错误 谢谢

  • Scala 集合 Map(映射)是一种可迭代的键值对(key/value)结构。 所有的值都可以通过键来获取。 Map 中的键都是唯一的。 Map 也叫哈希表(Hash tables)。 Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。 默认情况下 Scala 使用不可变 Map。如果你需要使用可变集合,你需要显式的引入 import scala.collecti

  • 下面的行不编译,因为编译没有找到“hashmap$hashtriemap” 40) 最后,我的示例如下所示: 注我没有使用Kryo特定的Akka特性,我使用它作为一个通用的序列化框架。火花也一样。没有直接插入火花或akka配置。

  • 我有我创建的地图的地图 我尝试在第二个映射中迭代键的值。 所以它可以是这样的: key1->keya->value1 -------->键->值2 -------->键->值4 -------->KeyC->value1 我想继续多久就继续多久。 因此,我有,并尝试使用名为的值变量和增量计数器if来循环中的所有值 我不知道如何获得。我试着这样做 但这给了我信笺。 如果我执行,它会给出我想要的正确值