Nim: let 语句没有赋值

Nim: let statement without assignment

我想要一个单一的赋值变量,但稍后进行赋值(在不同的块中)。

例如:

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"

但当然不好看...

它是impossible given the current implementation,你的选择对我来说似乎是合理的(或者使用一个初始值为-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 不是 return 已解析的值,而是已解析的字符数。