0

可能重复:
Scala 案例类上的更新操作

这个问题今天晚上来找我。

我有两个相同类型的实例化案例类。

case class Foo(a : Option[String], b : Option[String], c : Option[String])

让我们调用实例化的类 A 和 B。

val a = Foo(a=Some("foo"), b=Some("bar"), c=Some("baz"))
val b = Foo(a=None, b=Some("etch"), c=None)

我想知道是否有可能以通用方式在单个操作中用 B 更新案例类 A。

val c = b *oper* a // Foo(a=Some("foo"), b=Some("etch"), c=Some("baz"))

忽略设置为 None 的参数。理想情况下,操作也应该是通用的,因此它可以作用于任何类型的案例类。

我有一些直觉,可以通过首先将类转换为元组/列表并在操作完成后转换回类来使用 Scalaz 执行此操作 - 也许使用 ApplicativeBuilder?有任何想法吗?

4

1 回答 1

4
case class Foo(a:Option[String], b:Option[String], c:Option[String])

val a = Foo(a=Some("foo"), b=Some("bar"), c=Some("baz"))
val b = Foo(a=None, b=Some("etch"), c=None)

def op(a:Foo, b:Foo) = Foo(b.a.orElse(a.a), b.b.orElse(a.b), b.c.orElse(a.c))

op(a,b)

如果我理解正确的话......

于 2012-07-11T10:10:02.157 回答