【问题标题】:Change record values - haskell更改记录值 - haskell
【发布时间】:2020-09-03 18:12:22
【问题描述】:

我有这个记录:

data Ship = CShip {Planet::String}
    deriving Show
spaceship = CShip {Planet = "alphaCentauriBb"} 

但我想更改 Planet 上的字符串。例如:

Planet = "alphaCentauriCc"

有没有办法做到这一点?

【问题讨论】:

    标签: haskell record


    【解决方案1】:

    您可以使用记录更新语法来更新字段的值。这将创建一个新记录值,其字段值与旧记录值相同,但更新后的字段除外。

    newSpaceship = spaceship {planet = "alphaCentauriCc"} 
    

    请注意,字段名称必须小写。

    【讨论】:

    • 谢谢!所以我不能改变飞船上的值,必须创建一个新的,对吧?
    • @Nahu:所有变量在 Haskell 中都是不可变的,所以是的。您可以使用IORef 来引用某些内容,并使用IO 将对象更新为它所引用的内容。但是 reference 仍然是不可变的,并且使用 IO 会使它包装的变量可变,这可能不是一个好主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2015-05-03
    相关资源
    最近更新 更多