«closures» 태그된 질문

클로저는 정의 된 범위에서 변수를 참조 (폐쇄)하는 일류 함수입니다. 정의 범위가 끝난 후에도 클로저가 계속 존재하면 클로저가 닫히는 변수도 계속 존재합니다.

7
foreach 식별자 및 클로저
다음 두 스 니펫에서 첫 번째는 안전한가요, 아니면 두 번째는해야합니까? 안전하다는 것은 각 스레드가 스레드가 생성 된 동일한 루프 반복에서 Foo의 메서드를 호출하도록 보장된다는 것을 의미합니까? 아니면 새로운 변수 "local"에 대한 참조를 루프의 각 반복에 복사해야합니까? var threads = new List<Thread>(); foreach (Foo f in ListOfFoo) { Thread thread = …

3
Lambda 클로저 lvalue는 rvalue 참조 매개 변수로 전달 될 수 있습니다.
lvalue람다 클로저는 항상 rvalue함수 매개 변수 로 전달 될 수 있다는 것을 알았습니다 . 다음의 간단한 데모를 참조하십시오. #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
`std :: mem :: drop`이 상위 특성 트레이드의 클로저 | _ | ()와 정확히 동일하지 않은 이유는 무엇입니까?
구현은 std::mem::drop다음과 같습니다. pub fn drop<T>(_x: T) { } 따라서, 폐쇄 |_| ()( 구체적 으로 화장실 폐쇄 라고도 함 )가 drop양방향으로 잠재적으로 1 : 1로 대체 될 것으로 기대합니다 . 그러나 아래 코드 drop는 화장실 변수가 변하는 반면 함수의 매개 변수에 더 높은 순위의 특성과 호환되지 않음을 보여줍니다 . fn …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.