我希望能夠提示用戶輸入(比方說 a FilePath),而且還提供一個可變/互動式字串作為默認值,所以我可以提示用戶輸入完整路徑,而不是讓用戶輸入:
C:\Users\John\project\test
并讓他們能夠退格 4 次并輸入final到 yield C:\Users\John\project\final,而不是輸入整個路徑。
putStr但是,使用或列印默認字串System.IO.hPutStr stdout 會將此默認值列印到終端,但不允許我更改其中任何一個。例如
import System.IO
main = do
hSetBuffering stdout NoBuffering
putStr "C:\\Users\\John\\project\\test"
l <- getLine
doSomethingWith l
我懷疑Data.Text.IO'sinteract可能能夠做我想做的事,但我無法讓它作業。
任何建議將不勝感激。
uj5u.com熱心網友回復:
getLine不提供任何行編輯功能。為此,您可以使用類似的庫haskeline,例如:
import System.Console.Haskeline
main :: IO ()
main = do
runInputT defaultSettings $ do
mInput <- getInputLineWithInitial "Enter path: "
("C:\\Users\\John\\project\\test", "")
case mInput of
Nothing -> do
outputStrLn "No entry."
Just input -> do
outputStrLn $ "Entry: " show input
另一種方法是使用提供行編輯的包裝器呼叫程式,例如rlwrap. brick為了構建更復雜的全屏文本 UI ,還有Brick.Widgets.Edit.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/462847.html
標籤:哈斯克尔
