这是我的代码:
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
但我得到了错误:
无法将预期类型“[Char]”与实际类型“Integer”匹配
如何转换i
为字符?
这是我的代码:
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
但我得到了错误:
无法将预期类型“[Char]”与实际类型“Integer”匹配
如何转换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 中,如果你给它一些 type IO ()
,它会做到的。如果你给它其他类型的东西,它会show
它,然后putStr
它。这意味着如果您键入
"Hello\nMum"
它具有相同的效果
putStrLn (show "Hello\nMum")
而如果你想\n
成为换行符,你需要做
putStrLn "Hello\nMum"
show
在将其放在屏幕上之前阻止 ghci对其进行处理。(如果你发现自己做了很多putStr (show x)
,有一个捷径:print x
。)