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
Комментариев нет:
Отправить комментарий