Not nil注解

nil 是有效值的所有类型都可以注释为使用 not nil 注释将 nil 排除:

  1. type
  2. PObject = ref TObj not nil
  3. TProc = (proc (x, y: int)) not nil
  4.  
  5. proc p(x: PObject) =
  6. echo "not nil"
  7.  
  8. # 编译器捕获:
  9. p(nil)
  10.  
  11. # 和这个:
  12. var x: PObject
  13. p(x)

编译器确保每个代码路径初始化包含非空指针的变量。此分析的细节仍在此处指定。