为什么我不能将 => 应用于 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 支持,这应该为我们提供一种简洁的方法来编写在任何地方都有效的匿名过程。
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 支持,这应该为我们提供一种简洁的方法来编写在任何地方都有效的匿名过程。