typeof操作符
注意: typeof(x) 由于历史原因也可以写成 type(x) ,但不鼓励。
您可以通过从中构造一个 typeof 值来获取给定表达式的类型(在许多其他语言中,这被称为 typeof 操作符):
- var x = 0
- var y: typeof(x) # y has type int
如果 typeof 用于确定proc/iterator/converter c(X) 调用的结果类型(其中X
代表可能为空的参数列表),首选将 c 解释为迭代器,这种可以通过将 typeOfProc 作为第二个参数传递给 typeof 来改变:
- iterator split(s: string): string = discard
- proc split(s: string): seq[string] = discard
- # 因为迭代器是首选解释,`y` 的类型为 ``string`` :
- assert typeof("a b c".split) is string
- assert typeof("a b c".split, typeOfProc) is seq[string]