while(true) { string buf = ""; cout << "write string(Y/N): "; cin >> buf; if(buf == "Y") return true; if(buf == "N") return false; }
довольно тривиальная весчь, заставляющая ввести либо Y, либо N.
но вот на F# возникли некоторые проблемы(предположительно из-за того, что ключевое слово return можно не использовать и юзался #light)
т.е. написать в лоб:
while true do printf "write string(Y/N): " let Sol = Console.ReadLine() if Sol = "Y" then true if Sol = "N" then false
не получается, т.к. компилятор начинал ругаться на то, что возвращаемое выражение имеет неправильный тип...
в итоге это было решено следующим образом(в ФП стиле кстати, в императивном стиле я решения не нашёл удовлетворительного(два match и лишняя переменная не в счёт)):
type ... = ... member x.entr = printfn "Enter your solution(Y/N): " match Console.ReadLine() with | "Y" -> true | "N" -> false | _ -> x.entr ... interface ... with member x.roll (flag : bool, data : IRollData) = intrf.print data.DataList if flag = true then x.entr else false
хотя не думаю, что это лучший выход... скорее всего я как-то не так понял работу цикла while-do
Комментариев нет:
Отправить комментарий