experimental编译指示

experimental 编译指示实现了实验语言功能。 根据具体特征,这意味着该特征被认为对于其他稳定版本而言太不稳定,或者该特征的未来不确定(可能随时删除)。 示例:

  1. import threadpool
  2. {.experimental: "parallel".}
  3.  
  4. proc threadedEcho(s: string, i: int) =
  5. echo(s, " ", $i)
  6.  
  7. proc useParallel() =
  8. parallel:
  9. for i in 0..4:
  10. spawn threadedEcho("echo in parallel", i)
  11.  
  12. useParallel()

作为顶级语句,实验编译指示为其启用的模块的其余部分启用了一项功能。 这对于跨越模块范围的宏和通用实例化是有问题的。 目前这些用法必须放在 .push/pop 环境中:

  1. # client.nim
  2. proc useParallel*[T](unused: T) =
  3. # use a generic T here to show the problem.
  4. {.push experimental: "parallel".}
  5. parallel:
  6. for i in 0..4:
  7. echo "echo in parallel"
  8.  
  9. {.pop.}
  1. import client
  2. useParallel(1)