如何解决为什么我不能将=>应用于void?
糖与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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。