问题描述
糖与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支持,这应该为我们提供一种简洁的方法来编写可在任何地方使用的匿名proc。