继续与F#一起创建纸牌游戏系列.现在我不得不在卡片列表中添加值.我有
type Player = {Name : String; Hand : Card list}
Run Code Online (Sandbox Code Playgroud)
我能从牌组中取出牌,效果很好.我也可以创建新列表
let player = {Name = "Player"; Hand = List.Empty}
let testlist = List.append player.Hand anotherlist
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何将另一个名单直接添加到玩家手中.
您可以使用with构造:
let playerWithHand = { player with Hand = testlist }
Run Code Online (Sandbox Code Playgroud)
由于F#中的记录是不可变的,因此通常不会改变现有记录(尽管也有方法可以这样做),而是创建一个表示播放器新状态的新值.该with关键字使这很容易,因为它克隆一个记录并按规定改变它的一些属性,以新的价值观.