7
폴 그레이엄 (Paul Graham)은 훌륭한 기사 Revenge of the Nerds에서 언어가 다양하다고 주장했습니다.어큐뮬레이터 제너레이터 테스트 - Java 8
우리는 수 n을받는 함수 accumulators-- 생성하는 함수를 작성하려면, 다른 수를 취 i와 n은 반환하는 함수를 반환 어큐뮬레이터 발생기를 작성 - 그는 좋은 운동을 언급 i만큼 증가합니다. 자바
솔루션은 내가 (람다 덕분에) 이미 그루비 유사를 작성하는 방법을 섬세한 방법입니다 자바 8 에 있는지, 궁금
public class Accumulator {
public interface Inttoint {
public int call(int i);
}
public static Inttoint foo(final int n) {
return new Inttoint() {
int s = n;
public int call(int i) {
s = s + i;
return s;
}};
}
public static void main(String... args) {
Inttoint accumulator = foo(1);
System.out.println(accumulator.call(2) == 3);
System.out.println(accumulator.call(3) == 6);
}
}
, 아래를 참조하십시오. 시도했다 Function<Integer, Integer>
하지만이 컴파일러 오류가 붙어있다. 람다 표현식에서 참조
지역 변수는 최종이거나 효과적으로 최종
그래서 당신은 몇 가지 자바 (8) 솔루션을해야합니까?
모두의 그루비 한def foo(n) {
return {n += it}
}
def accumulator = foo(1)
assert accumulator(2) == 3
assert accumulator(3) == 6
참조 또한 다른 언어로 축적 발전기의 PG의 카탈로그 : http://www.paulgraham.com/accgen.html –