这是我的代码:

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 变成换行符?好吧,putStrputStrLn 的类型为 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/

10-08 22:40