typeof操作符

注意: typeof(x) 由于历史原因也可以写成 type(x) ,但不鼓励。

您可以通过从中构造一个 typeof 值来获取给定表达式的类型(在许多其他语言中,这被称为 typeof 操作符):

  1. var x = 0
  2. var y: typeof(x) # y has type int

如果 typeof 用于确定proc/iterator/converter c(X) 调用的结果类型(其中X代表可能为空的参数列表),首选将 c 解释为迭代器,这种可以通过将 typeOfProc 作为第二个参数传递给 typeof 来改变:

  1. iterator split(s: string): string = discard
  2. proc split(s: string): seq[string] = discard
  3.  
  4. # 因为迭代器是首选解释,`y` 的类型为 ``string`` :
  5. assert typeof("a b c".split) is string
  6.  
  7. assert typeof("a b c".split, typeOfProc) is seq[string]