這裏是我的代碼:哈斯克爾如何追加像 「.. ++整數++ ......」 整數
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
但我得到的錯誤:
Couldn't match expected type `[Char]' with actual type `Integer'
如何轉換i
要char?
這裏是我的代碼:哈斯克爾如何追加像 「.. ++整數++ ......」 整數
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
但我得到的錯誤:
Couldn't match expected type `[Char]' with actual type `Integer'
如何轉換i
要char?
使用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"
從show
停止ghci中把它在屏幕上之前荷蘭國際集團它。 (如果你發現自己做了很多putStr (show x)
,有一個快捷方式:print x
。)
謝謝。我通過「func 5」運行程序。我如何打印一個新行? – user1510412
@ user1510412希望新的編輯能更好地爲你解釋。 – AndrewC
使用'show',''LoadC R「++ show i ++」\ n「'。 –
謝謝,它的工作原理!但我如何打印一個新的行? – user1510412