我试图向玩家数据库中添加更多的"数据",但我得到了一些意想不到的结果:
数据类型声明:
data Player= Player teamName player goals
deriving (Show, Read)
type teamName = String
type player = String
type goals = [Int]
db :: [Players]
db = [
Player "Bayern" "Lewandowski" [3, 52, 16, 3],
Player "Tottenham" "Kane" [11, 31, 3, 2]
]
我用来向数据库中添加新玩家的代码。
addPlayer :: Player -> [Players] -> [Players]
addPlayer playerInfo database = database++[playerInfo]
用于显示给定数据库中的所有玩家:
showAllPlayers :: [Players] -> String
showAllPlayers [] =""
showAllPlayers [x] = getPlayer x
showAllPlayers (x:xs) = getPlayer x ++ "n" ++ showAllPlayers xs
当试图运行addPlayer(Player "Man UTD" "Rooney" [5, 6, 2, 11]) db)
行时,一切都很好,在控制台中,它说这一行已经添加。输出:[Player "Bayern" "Lewandowski" [3, 52, 16, 3],Player "Tottenham" "Kane" [11, 31, 3, 2],Player "Man UTD" "Rooney" [5, 6, 2, 11]]
但是当我运行代码输出所有玩家putStrnLn(showAllPlayers data)
时,我试图添加的玩家不在列表中?
addPlayers
不修改其数据库参数;相反,它返回一个更新的数据库。因此,正确的调用是:
putStrLn (showAllPlayers (addPlayer (Player "Man UTD" "Rooney" [5, 6, 2, 11]) db))