Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 什么';更改列表对象值的最佳方法是什么?_List_Scala_Functional Programming - Fatal编程技术网

List 什么';更改列表对象值的最佳方法是什么?

List 什么';更改列表对象值的最佳方法是什么?,list,scala,functional-programming,List,Scala,Functional Programming,我有一个保存对象的函数,我需要获取新id,在列表的所有对象中设置此id,并保存列表的对象 我来自OO,我正在尽最大努力达到功能范式……为了不违反不变的“规则”,我考虑了两种方法: 创建一个新列表并在构造函数上定义id,调用db上持久存在的函数 更改函数签名以接收id,并使用此id在db上持久化 最好的方法是什么 提前谢谢。如果我正确理解了你的问题,这里有一种方法 例如,您有一个Person对象列表 case class Person( id : Int, name : String, age

我有一个保存对象的函数,我需要获取新id,在列表的所有对象中设置此id,并保存列表的对象

我来自OO,我正在尽最大努力达到功能范式……为了不违反不变的“规则”,我考虑了两种方法:

  • 创建一个新列表并在构造函数上定义id,调用db上持久存在的函数
  • 更改函数签名以接收id,并使用此id在db上持久化
最好的方法是什么


提前谢谢。

如果我正确理解了你的问题,这里有一种方法

例如,您有一个Person对象列表

case class Person( id : Int, name : String, age : Int) 

val persons : List[Person] 
现在,如果您想为所有人设置id=100,您可以使用map并复制case类

val changedPersons = persons.map( p => p.copy(id) ) 

注意
changedPersons
是一个新列表,您可以保存它,或者使用它执行任何其他操作

如果我正确理解了你的问题,这里有一种方法

例如,您有一个Person对象列表

case class Person( id : Int, name : String, age : Int) 

val persons : List[Person] 
现在,如果您想为所有人设置id=100,您可以使用map并复制case类

val changedPersons = persons.map( p => p.copy(id) ) 

注意
changedPersons
是一个新列表,您可以保存它,或者使用它执行任何其他操作

如果我正确理解了你的问题,这里有一种方法

例如,您有一个Person对象列表

case class Person( id : Int, name : String, age : Int) 

val persons : List[Person] 
现在,如果您想为所有人设置id=100,您可以使用map并复制case类

val changedPersons = persons.map( p => p.copy(id) ) 

注意
changedPersons
是一个新列表,您可以保存它,或者使用它执行任何其他操作

如果我正确理解了你的问题,这里有一种方法

例如,您有一个Person对象列表

case class Person( id : Int, name : String, age : Int) 

val persons : List[Person] 
现在,如果您想为所有人设置id=100,您可以使用map并复制case类

val changedPersons = persons.map( p => p.copy(id) ) 

注意
changedPersons
是一个新列表,您可以保存它,或者使用它执行任何其他操作

很好!但是我在函数中收到一个对象。更改这个对象的值正确吗?如果我这样做,我可能会产生一些副作用,对吗?这取决于你接收的对象是否是不可变的。如果它是一个
案例类
,则不能更改该对象的特定实例。您必须修改它的副本。如果对象是可变的,则必须确保所做的修改是线程安全的,即多个线程无法修改此可变数据结构。感谢您的解释和回答:)很好!但是我在函数中收到一个对象。更改这个对象的值正确吗?如果我这样做,我可能会产生一些副作用,对吗?这取决于你接收的对象是否是不可变的。如果它是一个
案例类
,则不能更改该对象的特定实例。您必须修改它的副本。如果对象是可变的,则必须确保所做的修改是线程安全的,即多个线程无法修改此可变数据结构。感谢您的解释和回答:)很好!但是我在函数中收到一个对象。更改这个对象的值正确吗?如果我这样做,我可能会产生一些副作用,对吗?这取决于你接收的对象是否是不可变的。如果它是一个
案例类
,则不能更改该对象的特定实例。您必须修改它的副本。如果对象是可变的,则必须确保所做的修改是线程安全的,即多个线程无法修改此可变数据结构。感谢您的解释和回答:)很好!但是我在函数中收到一个对象。更改这个对象的值正确吗?如果我这样做,我可能会产生一些副作用,对吗?这取决于你接收的对象是否是不可变的。如果它是一个
案例类
,则不能更改该对象的特定实例。您必须修改它的副本。如果对象是可变的,则必须确保所做的修改是线程安全的,即多个线程无法修改此可变数据结构。感谢您的解释和回答:)