문제

람다가있는 C# 또는 Java의 이유는 무엇입니까? 어느 언어도 그들 주위에 기반을 두지 않고 C#과 같은 일을하는 또 다른 코딩 방법으로 보입니다.
나는 그 이유를 알고 싶은 이유가 있다면 나는 대립적이지 않다. 전체 공개를 위해 나는 LISP 경험이없는 C ++ 배경을 가진 Java 프로그래머입니다.

도움이 되었습니까?

해결책

나중에 실행할 코드 블록을 통과 (또는 저장) 해야하는 일반적인 사용 사례가 있습니다. 가장 일반적인 것은 이벤트 청취자입니다. 믿거 나 말거나, 다음과 같은 코드는 Java에서 Lambda-ish 구조를 사용합니다.

JButton button = new JButton("Push me!");
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("Pressed!");
    }
});

익명의 내면은 람다 역할을하고 있지만, 매우 장황한 사람이지만. 약간의 암시 적 변환 마법으로 스칼라에서 다음과 같은 것을 쓸 수 있습니다.

val button = new JButton("Push me!")
button.addActionListener { e =>
  println("Pressed!")
}

C#은 대의원과 (더 나은) Lambdas와 함께 이런 종류의 일을 상당히 쉽게 만듭니다.

다른 팁

나는 C#의 Lambdas를 대의원을위한 매우 편리한 단축으로 본다. 대의원 정의를 위해 다른 곳을 검색하지 않고 사용되는 곳에 코드를 사용하는 것이 훨씬 더 읽기 쉬운 것입니다.

구문 설탕.

아이디어,이 경우 작은 던지기 방법을 나타내는 편리하고 읽을 수있는 방법을 제공합니다. 후드 아래에서 컴파일러는이를 대의원 및 방법 호출로 확장하지만, 그것은 당신이 아니라 작업을 수행하는 일입니다.

Lambdas는 덜 장황하고 표현적인 코드를 작성할 수 있습니다. 예를 들어, 이해력을 나열하십시오...

BTW, Java에 폐쇄를 추가 할 가능성을 탐색하기위한 작업이 진행 중입니다. 그 동안 익명의 클래스를 대신 사용해야합니다 (Ugly).

C#은 특정 언어 설계 학교에 순결하지 않습니다 (Smalltalkers가 순수한 OO 언어로 설계 한 Java와 달리). C#은 모든 사람들에게 모든 사람들을 위해 가고 있으며, 그것은 꽤 능숙합니다. C#은 다양한 스타일의 프로그래밍을 고품질의 잘 지원되는 언어로 수집하는 데 기반을두고 있습니다. 여기에는 절차 적, 객체 지향, 기능적, 동적, 논리 등이 포함됩니다. 프로그래밍 스타일. 분명히, 지금까지는 역동적 또는 논리 스타일의 프로그래밍 방식이 많지 않지만 곧 다가올 것입니다 (C# 4.0과 함께 다이나믹 프로그래밍).

C#의 경우 Lambdas는 LINQ를 구현하는 데 내부적으로 사용됩니다. 기사를 참조하십시오 LINQ의 진화와 C#의 설계에 미치는 영향

Lambda 's는 정의가 때때로 사용 지점에서 멀리 떨어진 기능 객체를 사용하는 현재 C ++ 방법을 좋아하지 않고 작업 지점에 더 가깝게 작동 할 수 있다는 점에서 더 읽기 쉬운 코드를 허용합니다. (이것은 일부 부스트 라이브러리를 포함하지 않습니다). Lambdas의 핵심 요점은 더 간결하고 이해하기 쉬운 코드를 허용한다는 것입니다.

많은 경우 "최종"옵션을 암시하여 Java의 멀티 스레딩을 사용하여 더 나은 보안을 제공합니다. 따라서 멀티 태스킹에 대한 오류가 발생하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top