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 已解析的值,而是已解析的字符数。
我想要一个单一的赋值变量,但稍后进行赋值(在不同的块中)。
例如:
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 已解析的值,而是已解析的字符数。