Как вы, ребята, обрабатываете проверку ввода консоли? В С++ случай/переключатель - это мой путь...
Я пробовал рекурсивную функцию, но застрял на более низких уровнях. К тому же это может быть перебор. Я управлял циклом while с помощью «исключающего или», но это не очень масштабируемо.
function prob6()
println("Pick a number; any number:")
x = readline(stdin)
y = parse(Int64, x)
z = 0
println("Select 1 or 2")
p1 = readline(stdin)
p2 = parse(Int64, p1)
select = p2
while xor((p2 == 1), (p2 == 2)) == false
println("Select 1 or 2")
p1 = readline(stdin)
p2 = parse(Int64, p1)
select = p2
end
if select == 1
for i in 1:y
print("$i ")
z = z + i
end
else
z = 1
for i in 1:y
print("$i ")
z = z * i
end
end
println(z)
end
Любые альтернативы?
Есть много способов. Обычно я создаю цикл проверки, чтобы проверить тип элемента ввода, и буду использовать tryparse вместо parse, так как он не выдаст ошибку, если ввод искажен:
function queryprompt(query, typ)
while true
print(query, ": ")
choice = uppercase(strip(readline(stdin)))
if (ret = tryparse(typ, choice)) != nothing
return ret
end
println()
end
end
n = queryprompt("Integer please", Int64)
println(n)
x = queryprompt("Float please", Float64)
println(x)
Гораздо элегантнее моего!