作者:rlu1941950 | 来源:互联网 | 2022-10-11 19:30
如何增加属性?我创建了一个用户类型
data user = User{
username :: String,
passwort :: String,
points :: Int
}
user = user {username ="Test",
passwort="test123",
points=100
}
我想将点数增加10,所以我尝试做类似其他编程语言的操作 points += 10
userplus10 = user{points = points +10}
(顺便说一句,这不起作用)创建一个新用户,但在点上具有另一个值。
1> leftaroundab..:
它确实有效,但是您需要指定要增加的点。user
s,对不对?
userplus10 = user{points = points user + 10}
不过,做这种事情的更好的方法是镜片。
{-# LANGUAGE TemplateHaskell, Rank2Types #-}
import Control.Lens
data User = User
{ _username :: String,
, _passwort :: String,
, _points :: Int
}
makeLenses ''User
user = user {username ="Test", passwort="test123", points=100}
userPlus10 = user & points +~ 10
[This](http://www.haskellforall.com/2013/05/program-imperatively-using-haskell.html)是一篇很棒的文章,适用于Haskell相对较新的人,它讲述了透镜如何使您能够撰写“ OO查找”代码。同样,虽然整个Lens软件包确实是野兽,但那里有各种“简化”的Lens软件包,它们为您提供了所有最常用的功能,而无需大量依赖,例如。[这个](http://hackage.haskell.org/package/lens-simple)