gpt4 book ai didi

scala - Scala 中复制对象的简洁方法

转载 作者:行者123 更新时间:2023-12-02 00:40:54 24 4
gpt4 key购买 nike

OCaml 公开了一种简洁的语法,用于复制具有大量字段的记录。

type t = {
x : int;
y : int;
z : int;
}

let _ =
let v = {x = 1; y = 2; z = 3} in
{v with z = 42}

Scala 的 case 类是否有类似的语法?

最佳答案

Case 类不仅定义 equalshashCodetoString 方法,还定义 copy 方法。幸运的是,copy 方法的定义方式是,this 对象的当前值是默认参数,但您可以使用命名参数更改其中任何一个。您的示例如下所示:

case class Type(
x : int,
y : int,
z : int,
)

val v = Type(x = 1, y = 2, z = 3)
v.copy(z=42)

但您也可以使用透镜库之一。 (我认为 scalaz 和 Shapeless 都有一个。)

关于scala - Scala 中复制对象的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821644/

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