Pytania otagowane jako closures

Zamknięcie jest funkcją pierwszej klasy, która odwołuje się do (zamyka) zmienne z zakresu, w którym zostało zdefiniowane. Jeśli zamknięcie nadal istnieje po zakończeniu jego definiującego zakresu, zmienne, które zamyka, również będą istnieć.

7
Identyfikator foreach i zamknięcia
Czy w dwóch kolejnych fragmentach pierwszy z nich jest bezpieczny, czy też musisz zrobić drugi? Przez bezpieczne rozumiem, czy każdy wątek gwarantuje wywołanie metody na Foo z tej samej iteracji pętli, w której został utworzony wątek? A może musisz skopiować odniesienie do nowej zmiennej „lokalnej” do każdej iteracji pętli? var …

3
Wartości wartości zamknięcia lambda można przekazać jako parametry referencyjne wartości
Odkryłem, że lvaluezamknięcia lambda zawsze można przekazać jako rvalueparametry funkcji. Zobacz następującą prostą demonstrację. #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: passing a `lvalue` function …

2
Dlaczego `std :: mem :: drop` nie jest dokładnie taki sam jak zamknięcie | _ | () w wyższych zakresach cech?
Realizacja std::mem::dropjest udokumentowana następująco: pub fn drop<T>(_x: T) { } Jako taki, oczekiwałbym, że zamknięcie |_| ()(potocznie zwane zamknięciem toalety ) będzie potencjalnym zamiennikiem 1: 1 dropw obu kierunkach. Jednak poniższy kod pokazuje, że dropnie jest zgodny z cechą wyższego rzędu związaną z parametrem funkcji, podczas gdy zamknięcie toalety jest. …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.