Kev*_*vin 0 haskell functional-programming
如何增加属性?我创建了一个用户类型
data user = User{
username :: String,
passwort :: String,
points :: Int
}
user = user {username ="Test",
passwort="test123",
points=100
}
Run Code Online (Sandbox Code Playgroud)
我想将点数增加10,所以我尝试做类似其他编程语言的操作 points += 10
userplus10 = user{points = points +10}
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,这不起作用)创建一个新用户,但在点上具有另一个值。
它确实有效,但是您需要指定要增加的点。users,对不对?
userplus10 = user{points = points user + 10}
Run Code Online (Sandbox Code Playgroud)
不过,做这种事情的更好的方法是镜片。
{-# 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
Run Code Online (Sandbox Code Playgroud)