2014-09-10 3 views

답변

7

무엇이 currying입니까?

currying은 기존 메소드와 인수에서 새 메소드 참조를 구성 할 수있는 기능입니다. 예 :

// this is curried and implied in this method. 
BiFunction<String, Integer> m = this::methodTwo; 

// create a new curried method. 
Function<String> m10 = t -> m.apply(t, 10); 

실제 예는

// curry this method so that when called it prints to System.out 
Consumer<String> out = System.out::println; 

자바 8 방법 참조가 '사실'함수 포인터만큼 강력하지 않은 소비자입니다.

Java 8 메소드 참조는 실제로 가상 메소드를 캡슐화하는 객체에 대한 참조입니다. 이것은 매우 잘 작동하지만, 당신이 할 수 없을 것으로 기대할 수있는 몇 가지 기본적인 것들입니다. 예 : equals(), toString(), expression 검사는 예상했던대로하지 않습니다.

함수 참조와 메소드 포인터가 다른 점은 무엇입니까?

함수 포인터는 함수에 대한 참조입니다. Java에서의 메소드 참조는 예를 들어. 이것은 인수를 알고있는 X, Y, Z가있는 메소드입니다.

Java 8은 진정한 폐쇄를 지원합니까?

자바는 기능면에서 미니멀리즘을 지니는 경향이 있지만, Java에서 아무 기능도 제공하지 않는 것보다 "순수"하다고 생각할 수 있습니다. 순수한 의사가 있더라도 이전 버전과의 호환성 문제가 너무 많아서 해결할 수 없습니다.

람다에서 사용하기 전에 final 변수를 선언해야합니까?

아니요, "사실상 최종"으로 충분합니다. 즉, 최종 결정을 내릴 수 있다면 괜찮습니다.

+0

프로그래머의 관점에서 함수 포인터와 메서드 참조 사이에 차이점이 있습니까? –

+1

@Prog 주요 차이점은 용어가 다른 언어로 사용된다는 것입니다. 그건 그렇고, "방법"은 객체 지향 디자인을 암시하고 "이"에 대한 암시 적 참조를 가질 수 있습니다. Java에서는 다른 객체를 참조 할 수도 있습니다. 방법은 인수가 변경되지 않는다는 것을 의미하지는 않습니다. "함수"는 모든 인수가 명시 적이며 변경되지 않음을 의미합니다. –

+0

예를 들어, JS에서 변수에 함수를 할당 할 수 있습니다. Java 8에서도 그렇게 할 수 있습니다. JS, C 등의 언어에서 함수 포인터와 Java 8의 메서드 참조가 다른 점은 무엇입니까? –

관련 문제