Неправильный порядок действий ввода-вывода с использованием putStr и getLine

При использовании функции DrawerLayout в этом случае должно быть только одно основное содержимое View с ящиком View - в этом случае ваш ListView - после него. Использование DrawerLayout любым другим способом приведет к неправильному, непредсказуемому поведению, часто препятствуя нормальному взаимодействию с другими элементами макета.

Учебник со ссылками на образец и документы можно найти на this страница разработчика .

38
задан nbro 9 September 2017 в 22:46
поделиться

1 ответ

Это связано с тем, что ghci отключает буферизацию, а программа, скомпилированная с помощью ghc, по умолчанию имеет буферизацию строк. Вы можете увидеть это, выполнив следующее:

import System.IO
main = print =<< hGetBuffering stdout

В ghci вы видите NoBuffering , а в runghc вы получаете LineBuffering . Поскольку символ новой строки не печатается до после пользовательского ввода, приглашение также не печатается.

Исправьте это, добавив hFlush stdout после вашего приглашения (или отключив буферизацию с помощью hSetBuffering stdout NoBuffering , но это, вероятно, плохо).

52
ответ дан 27 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: