Ним: пусть заявление без присваивания
Я хочу иметь одну переменную присваивания, но сделаю присваивание позже (в другом блоке).
Например:
let n: int
try:
n = parseInt paramStr(1)
except ValueError:
quit "Expected Number
Это сейчас невозможно? Если так, то почему? И какова лучшая альтернатива в этой ситуации?
Я считал это:
let n =
try:
parseInt paramStr(2)
except ValueError:
-1
if n == -1:
quit "Expected a number"
но выглядит не очень хорошо, конечно...
1 ответ
Решение
Это невозможно, учитывая текущую реализацию, ваша альтернатива мне кажется разумной (или использовать переменную с начальным значением -1
). В противном случае вы можете использовать parseopt
модуль для абстрагирования логики проверки ввода из командной строки.
Вы можете сделать что-то вроде:
let n =
try:
var n: int
let processedChars = paramStr(1).parseInt(n)
if processedChars == 0:
quit "Expected number"
n
except ValueError:
quit "Parsed integer is out of the valid range"
Также обратите внимание, что parseInt
возвращает не проанализированное значение, а количество проанализированных символов.