List 什么';更改列表对象值的最佳方法是什么?
我有一个保存对象的函数,我需要获取新id,在列表的所有对象中设置此id,并保存列表的对象 我来自OO,我正在尽最大努力达到功能范式……为了不违反不变的“规则”,我考虑了两种方法: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,调用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
是一个新列表,您可以保存它,或者使用它执行任何其他操作 很好!但是我在函数中收到一个对象。更改这个对象的值正确吗?如果我这样做,我可能会产生一些副作用,对吗?这取决于你接收的对象是否是不可变的。如果它是一个案例类
,则不能更改该对象的特定实例。您必须修改它的副本。如果对象是可变的,则必须确保所做的修改是线程安全的,即多个线程无法修改此可变数据结构。感谢您的解释和回答:)很好!但是我在函数中收到一个对象。更改这个对象的值正确吗?如果我这样做,我可能会产生一些副作用,对吗?这取决于你接收的对象是否是不可变的。如果它是一个案例类
,则不能更改该对象的特定实例。您必须修改它的副本。如果对象是可变的,则必须确保所做的修改是线程安全的,即多个线程无法修改此可变数据结构。感谢您的解释和回答:)很好!但是我在函数中收到一个对象。更改这个对象的值正确吗?如果我这样做,我可能会产生一些副作用,对吗?这取决于你接收的对象是否是不可变的。如果它是一个案例类
,则不能更改该对象的特定实例。您必须修改它的副本。如果对象是可变的,则必须确保所做的修改是线程安全的,即多个线程无法修改此可变数据结构。感谢您的解释和回答:)很好!但是我在函数中收到一个对象。更改这个对象的值正确吗?如果我这样做,我可能会产生一些副作用,对吗?这取决于你接收的对象是否是不可变的。如果它是一个案例类
,则不能更改该对象的特定实例。您必须修改它的副本。如果对象是可变的,则必须确保所做的修改是线程安全的,即多个线程无法修改此可变数据结构。感谢您的解释和回答:)