익명 함수에서 명시 적 return 문 (return
키워드를 사용하는 문)이 익명 함수 자체가 아닌 동봉 된 명명 된 함수에서 반환되는 이유는 무엇입니까?익명 함수에서 스칼라 반환 문
예. 유형 오류에 다음 프로그램 결과 :
def foo: String = {
((x: Integer) => return x)
"foo"
}
나는 return
키워드를 피하기 위해 권장 알지만, 명시 적 및 암시 적 반환 문은 익명 함수에서 다른 의미를 가질 이유에 관심이 있어요.
다음 예제에서는 m
실행이 끝난 후 return 문이 "생존"하고 프로그램 결과가 런타임 예외가 발생합니다. 익명의 함수가 내부 함수에서 반환되지 않으면 해당 코드를 컴파일 할 수 없습니다.
def main(args: Array[String]) {
m(3)
}
def m: (Integer => Unit) =
(x: Integer) => return (y: Integer) => 2
의미의 차이가 필요한 이유에 대해 좀 더 진지한 예가 있습니까? 나열된 것은 프리디 케이트 매개 변수가있는 수정 된'foreach'로 쉽게 에뮬레이트 될 수 있기 때문입니다. – corazza