我有一个元组列表。例如:[("A",100,1),("B",101,2)]
。我需要以简单的方式显示它。例如:“你的名字是:A”,“你的id是:100”
。
如果有人能找到解决方案,那将是一个很大的帮助。提前致谢。
最佳答案
执行此操作的最简单方法是创建一个适用于列表中的元素之一的函数。所以你需要这样的东西:
showDetails :: (String, Int, Int) -> String
showDetails (name, uid, _) = "Your name is:" ++ name ++ " Your ID is: " ++ show uid
然后你会把这个函数应用到列表中的每个元素,这意味着你想使用映射函数:
map :: (a -> b) -> [a] -> [b]
因此,如果您的列表名为 xs
,您可能需要这样的内容:
map showDetails xs
这显然为您提供了 [String]
类型的结果,因此您可能对 unlines
函数感兴趣:
unlines :: [String] -> String
这只是获取一个字符串列表,并创建一个字符串,其中每个元素由一个新行分隔。
然后,将所有这些放在一起,您将:
main :: IO ()
main = putStrLn . unlines . map showDetails $ [("A",100,1),("B",101,2)]
https://stackoverflow.com/questions/8094993/