1
6
我从来没有听说过“显规则胜于隐规则”的规则,我不同意。当然,有些情况下是真的,但也有很多情况下不是真的
我还没有真正使用C++ LAMBDAS(除了使用VC10测试版),但大部分时间我都会使用后者。
我的推理?为什么不做呢?很方便。它起作用了。而且更容易维护。当我修改lambda的主体时,不必更新捕获列表。为什么我要明确一些编译器比我更了解的东西?编译器可以根据实际使用的内容找出捕获列表。 至于按参考值和价值捕获?我会采用和常规功能相同的规则。如果需要引用语义,请通过引用捕获。如果你需要复制语义,就这么做。如果两种方法都可以,请选择较小类型的值,如果复制成本较高,请选择引用。 这与设计常规函数时必须做出的选择似乎没有什么不同。 我可能应该阅读一下lambdas的规范,但显式捕获列表的主要原因不是让您可以按值捕获一些变量,而按引用捕获其他变量吗? |
2
2
我最初的直觉是,按值捕获或多或少提供了与Java的匿名内部类相同的数量。但是,如果希望封闭范围可变,则可以通过引用捕获,而不是使用array-of-size-1技巧。因此,您有责任将lambda的持续时间限制在referrand的范围内。 实际上,我同意你的观点,即在处理算法时,引用捕获应该是默认的,我希望这将是大多数使用。Java中匿名内部类的一个常见用法是侦听器。在C++中可以看到较少的侦听器样式接口,所以它不太需要,但仍然存在。在这种情况下,最好严格按价值捕获,以避免出错的机会。也许,通过共享的价值捕获是一个大的习惯用法吗? 不过,我还没有用过兰姆达斯,所以我可能错过了一些重要的东西。 |
3
0
我可以在这里看到一个新的编码标准规则!;) 这有点做作,但只是为了突出一个“优势”,以显式,考虑如下:
现在,我特意选了一些不好的名字等等,但这只是为了说明这一点。如果我们使用一个显式的捕获列表,那么上面的代码将不会编译,但目前它会编译。 在一个非常严格的环境(安全关键)中,我可以看到这样的规则是编码标准的一部分。 |
4
0
我会在方便的时候使用显式的捕获列表,当您想要捕获很多变量时(您可能做错了什么),您可以使用grab all
我的看法是,显式捕获列表是理想的,隐式变量应该避免,只有这样人们才不必在实际需要时键入大量代码。 |
5
0
我正在阅读下面的链接,以更好地理解C++ LAMBDA。示例中使用的编码样式非常简洁,我能够遵循: http://uint32t.blogspot.com/2009/05/using-c0x-lambda-to-replace-boost-bind.html |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |