2016-08-29 4 views
1

Ich versuche einen entryText in einen String zu konvertieren, damit ich ihn für andere Funktionen verwenden kann.Konvertiere einen entryGetText in Int gtk2hs

`unsafePerformIO (entryGetText txtMagn)` 

Während diesen Code zu kompilieren versuchen, erhalte ich die Fehlermeldung:

`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’` 

Vielen Dank im Voraus

Antwort

3

Dies liegt daran, Sie

putStrLn unsafePerformIO (entryGetText txtMagn) 

Hier schrieb passieren Sie unsafePerformIO zu putStrLn als ein Parameter. Sie eigentlich gemeint:

putStrLn (unsafePerformIO (entryGetText txtMagn)) 

Nun zum unsafePerformIO. Wie der Name schon sagt, ist es unsicher, also sollten Sie besser eine klare Idee haben, was Sie erreichen möchten. Um sicher Ihr Wert herausziehen aus dem IO und es später verwenden:

text <- entryGetText txtMagn 
putStrLn text 
0

Um den Wert zu erhalten, müssen Sie die Lesefunktion verwenden:

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