尼姆:让陈述而未赋值

时间:2018-12-10 01:27:22

标签: nim

我想要一个赋值变量,但稍后再进行赋值(在另一个块中)。

例如:

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"

但是看起来当然不好……

2 个答案:

答案 0 :(得分:1)

它是impossible given the current implementation,对我来说您的替代方法似乎很合理(或使用初始值为-1的var)。否则,您可以使用parseopt模块来抽象命令行输入验证逻辑。

答案 1 :(得分:0)

您可以执行以下操作:

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不会返回解析的值,而是解析的字符数。