将 entryGetText 转换为 Int gtk2hs

Convert a entryGetText into Int gtk2hs

我正在尝试将 entryText 转换为字符串,以便将其用于其他功能。

`unsafePerformIO (entryGetText txtMagn)`

在尝试编译此代码时,我收到错误消息:

`Couldn't match type ‘IO a0 -> a0’ with ‘[Char]’
    Expected type: String
      Actual type: IO a0 -> a0
    Probable cause: ‘unsafePerformIO’ is applied to too few arguments
    In the first argument of ‘putStrLn’, namely ‘unsafePerformIO’`

提前致谢

这是因为你写了

putStrLn unsafePerformIO (entryGetText txtMagn)

此处将unsafePerformIO作为参数传递给putStrLn。您实际上是指:

putStrLn (unsafePerformIO (entryGetText txtMagn))

现在进入 unsafePerformIO。顾名思义,它是不安全,因此您最好清楚地知道您要完成什么。要安全地从 IO 中提取您的值并在以后使用它:

text <- entryGetText txtMagn
putStrLn text

要获取值,必须使用读取函数:

val <- getLine
someFunctionWhichNeedsTheValue (read val ::Float)