Preguntas etiquetadas con closures

Un cierre es una función de primera clase que se refiere a (cierra) variables del ámbito en el que se definió. Si el cierre aún existe después de que finaliza su alcance de definición, las variables sobre las que se cierra continuarán existiendo también.

7
El identificador foreach y los cierres
En los dos siguientes fragmentos, ¿el primero es seguro o debe hacer el segundo? Por seguro, quiero decir, ¿se garantiza que cada hilo llame al método en Foo desde la misma iteración de bucle en el que se creó el hilo? ¿O debe copiar la referencia a una nueva variable …

3
Los valores de cierre de Lambda se pueden pasar como parámetros de referencia de valor
Descubrí que los lvaluecierres lambda siempre se pueden pasar como rvalueparámetros de función. Vea la siguiente demostración simple. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: …

2
¿Por qué no es `std :: mem :: drop` exactamente igual que el cierre | _ | () en los límites de rasgos de mayor rango?
La implementación de std::mem::dropestá documentada para ser la siguiente: pub fn drop<T>(_x: T) { } Como tal, esperaría que el cierre |_| ()(conocido coloquialmente como cierre del inodoro ) sea un posible reemplazo 1: 1 drop, en ambas direcciones. Sin embargo, el siguiente código muestra que dropno es compatible con …

1
¿Cuál es una mejor manera de lidiar con los cierres en WebAssembly con Rust en lugar de usar olvidar y perder memoria?
Al proporcionar devoluciones de llamada a JavaScript usando Closures , ¿cuál es una mejor manera de lidiar con evitar liberarlos? La guía wasm-bindgen sugiere usar .forget, pero admite que eso es esencialmente una pérdida de memoria. Normalmente, almacenaríamos el identificador para luego descartarlo en el momento adecuado, pero por ahora …

2
¿Java 8 captura variable variable lambda del parámetro del método?
Estoy usando AdoptOpenJDK jdk81212-b04en Ubuntu Linux, ejecutándome en Eclipse 4.13. Tengo un método en Swing que crea una lambda dentro de una lambda; ambos probablemente sean llamados en hilos separados. Se ve así (pseudocódigo): private SwingAction createAction(final Data payload) { System.out.println(System.identityHashCode(payload)); return new SwingAction(() -> { System.out.println(System.identityHashCode(payload)); //do stuff //show …
8 java  lambda  closures 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.