向元组添加“值”

我试图将更多“数据”添加到玩家数据库中,但我得到了一些意想不到的结果:

数据类型声明:

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))


以上是向元组添加“值”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>