为什么我不能将 => 应用于 void 函数?

Why I can't apply => to function with void?

Sugar 与 map

合作
import sugar 

proc map2*[T, R](list: openArray[T]; cb: proc (x: T): R): seq[R] =
  for v in list: result.add(cb(v))
  result
  
echo @[1, 2].map2((v) => v*v)

但与 each 无关,似乎与 void 有某种关系,有没有办法让它也与 void 一起工作?

import sugar 

proc each2*[T](list: openArray[T]; cb: proc (x: T): void): void =
  for v in list: cb(v)

@[1, 2].each2((v) => echo v)

我个人在 sugar.=> 方面运气不佳。这会做你想做的,而且不会更冗长:

proc each2*[T](list: openArray[T]; cb: proc (x: T): void): void =
  for v in list: cb(v)

@[1, 2].each2(proc(v: auto) = echo v)

This RFC 提议适当的 lambda 支持,这应该为我们提供一种简洁的方法来编写在任何地方都有效的匿名过程。