我正在尝试将不是字符串的值打印到控制台。
在这种情况下,它是一个整数数组。
如何将数组或允许此类行为的任何其他值转换为字符串。
module Main where
import Prelude
import Control.Monad.Eff.Console
import Data.Array
main = log [1, 2, 3, 4, 5]
当我运行上面的代码时,编译器会出现以下错误:
Could not match type
Array Int
with type
String
while checking that type Array t0 is at least as general
as type String while checking that expression
[ 1, 2, 3, 4, 5 ]
has type String in value declaration main
where t0 is an unknown type
答案 0 :(得分:2)
您应该如何将数组转换为字符串取决于您需要对该字符串执行的操作。也就是说,这取决于谁将使用该字符串以及如何使用该字符串。可能的范围从将它变成一个字符串" array"一直到binary-base64-encoding。
如果您只需将其打印出来用于调试或教育目的,请使用function show
from type class Show
。有一个为数组定义的类型类的实例,因此该函数将适用于您的情况。
main = log $ show [1,2,3,4,5]
如果你想选择一个快捷方式,请使用logShow
函数,它完全符合上述要求:
main = logShow [1,2,3,4,5]
打印出用于调试目的的内容的另一种方法是the traceAny
function from Debug.Trace
。此函数不需要Show
实例,因为它使用本机JavaScript console.log
,它只会转储您的值的原始JSON表示:
main = traceAny [1,2,3,4,5] \_ -> pure unit
请注意:此功能仅用于调试,请勿将其用于可靠输出。