这是我的代码:
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
但我得到了错误:
如何将
i
转换为字符? 最佳答案
使用 show
将数字转换为字符串:
func :: Integer -> String
func i = "LoadC R" ++ show i ++ "\n"
show
适用于很多事情(但不是全部)。要实际打印这个,你需要做
main = putStr (func 5)
或者,如果您正在使用 ghci(我建议您在编写代码时经常使用它,并在编写后立即测试所有内容),您可以只编写
putStr (func 5)
它会起作用。 (我将在下面解释原因。)
如果您使用
putStrLn
而不是 putStr
它会在末尾放置一个额外的换行符。如果您想在打印的内容中添加新行,请将
\n
放在您喜欢的任何位置。func2 :: Integer -> String
func2 i = "\nLoadC \nR\n" ++ show i ++ "\n"
里面有很多换行符。
为什么
putStr
将 \n
变成换行符?好吧,putStr
和 putStrLn
的类型为 String -> IO ()
,这意味着它们将给定的字符串转换为 IO 程序,然后将其显示在屏幕上。在 ghci 中,如果你给它一些 IO ()
类型的东西,它就会做到。如果你给它其他类型的东西,它会 show
它然后 putStr
。这意味着如果你输入"Hello\nMum"
它具有相同的效果
putStrLn (show "Hello\nMum")
而如果您希望
\n
成为换行符,则需要执行putStrLn "Hello\nMum"
在将它放在屏幕上之前阻止 ghci
show
ing 它。 (如果你发现自己做了很多 putStr (show x)
,有一个快捷方式: print x
。)关于Haskell 如何 append 整数,如 "..++ Integer++ ...",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13103953/