use*_*412 3 haskell append type-conversion
这是我的代码:
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误:
无法将预期类型`[Char]'与实际类型`Integer'匹配
我如何转换i为char?
And*_*ewC 13
使用show把数字转换成字符串:
func :: Integer -> String
func i = "LoadC R" ++ show i ++ "\n"
Run Code Online (Sandbox Code Playgroud)
show适用于很多事情(但不是全部).要实际打印这个,你需要做
main = putStr (func 5)
Run Code Online (Sandbox Code Playgroud)
或者如果你正在使用ghci(我建议你在编写代码时使用很多,在编写代码后立即测试),你可以写
putStr (func 5)
Run Code Online (Sandbox Code Playgroud)
它会起作用.(我将在下面解释原因.)
如果你使用putStrLn而不是putStr它在最后添加一个额外的换行符.如果您想在打印的内容中添加新行,请将\n其放在任何您喜欢的位置.
func2 :: Integer -> String
func2 i = "\nLoadC \nR\n" ++ show i ++ "\n"
Run Code Online (Sandbox Code Playgroud)
它有很多新行.
为什么putStr转\n成换行?好吧,putStr并且putStrLn具有类型String -> IO ()含义,它们将它们转换为一个IO程序,将它放在屏幕上.在ghci中,如果你给它一些类型IO (),它就会这样做.如果你给它一些其他类型的东西它就会show那么putStr它.这意味着如果你输入
"Hello\nMum"
Run Code Online (Sandbox Code Playgroud)
它具有相同的效果
putStrLn (show "Hello\nMum")
Run Code Online (Sandbox Code Playgroud)
而如果你想要\n成为换行符,你需要这样做
putStrLn "Hello\nMum"
Run Code Online (Sandbox Code Playgroud)
show在将它放在屏幕上之前停止ghci .(如果你发现自己做了很多putStr (show x),那就有一条捷径:print x.)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |