포함된 범위의 변수에 대한 액세스
로컬 변수에 대한 액세스
수정 제한
수정할 수 없습니다:
인스턴스 변수 수정
람다 표현식은 다음을 수행할 수 있습니다.
예: 외부 범위에서 지역 변수 캡처
코드:
interface MyFunc { int func(int n); } class VarCapture { public static void main(String args[]) { // Variável local que pode ser capturada int num = 10; MyFunc myLambda = (n) -> { // Uso correto da variável num int v = num + n; // A instrução abaixo é inválida porque tenta modificar num // num++; return v; }; // Usando a expressão lambda System.out.println(myLambda.func(8)); // Exibe: 18 // Modificar num aqui também causaria erro // num = 9; } }
설명:
Num Capture:
num은 초기 할당 후에 변경되지 않으므로 사실상 최종입니다.
Lambda는 num에 액세스할 수 있지만 수정할 수는 없습니다.
실행:
myLambda.func(8)은 다음과 같은 이유로 18을 반환합니다.
num(10)이 매개변수 n(8)에 추가되어 18이 생성됩니다.
수정으로 인한 오류:
num 또는 num = 9의 주석 처리를 제거하면 캡처가 무효화되어 컴파일 오류가 발생합니다.
참고:
중요: 인스턴스 또는 정적 변수는 람다 표현식 내에서 제한 없이 사용하고 수정할 수 있습니다.
제한사항은 외부 범위 지역 변수에만 적용됩니다.
위 내용은 람다 표현식 및 변수 캡처의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!