Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[아이템 45] 스트림은 주의해서 사용하라 #11

Open
punsoo opened this issue Apr 10, 2021 · 1 comment
Open

[아이템 45] 스트림은 주의해서 사용하라 #11

punsoo opened this issue Apr 10, 2021 · 1 comment

Comments

@punsoo
Copy link
Member

punsoo commented Apr 10, 2021

p 273 를 보면

코드 블록에서는 return 문을 사용해 메서드에서 빠져나가거나, break나 continue 문으로 블록 바깥의 반복문을 종료하거나 반복을 한 번 건너뛸 수 있다. 또한 메서드 선언에 명시된 검사 예외를 던질 수 있다. 하지만 람다로는 이 중 어떤 것도 할 수 없다.

라고 나와있습니다.

메서드 선언에 명시된 검사 예외를 던진다 라는 문장의 원문은 혹시 헷갈릴까봐 가져왔습니다.

throw any checked exception that this method is declared to throw;

링크를 참조하면 람다로도 checked exception을 구현할 수 있는 거 같아 혼란이 옵니다.
(자바지기님이 작성한 글이네요)

return으로 빠져나오는 것도 가능하지 않을까요? 다음 코드처럼 말입니다

(int a, int b) -> {
  if(a==1){
    return 0 ;
  }
return a+b;
}

비슷하게

(int a, int b) -> {
  while(true){
    break;
  }
}

이런 것도 가능할 거 같습니다.

책에서 말한 람다로 할 수 있는 것이란 이렇게 중괄호 속에 복잡하게 표현한 것은 제외한 것일까요?
람다로 하면 깔끔하지는 않지만 가능한 거 같은 것들을 책에서 불가능하다고 해서 혼란이 옵니다.

정완님 의견이 궁금하네요

@ghojeong
Copy link
Member

@punsoo
한번 statement 와 expression 두개의 차이에 대해서 공부해보시기 바랍니다.
그리고 함수형 프로그래밍 패러다임과, 절차지향 프로그래밍 패러다임이 statement 와 expression 을 어떻게 다르게 다루는지 한번 공부해보세요.
근데 이건 포비님이 엘레강트 빠돌이 인것처럼, 제가 함수형 빠돌이라서 이렇게 깐깐히 따지게 되네요.
보통은 이렇게까지 엄격하게 따지지 않습니다.
근데 순철님은 수학과에다가 물리학과 전공이시니, 아마 함수형 패러다임을 공부하시게 되면,
순철님도 함수형 빠돌이가 되시지 않을까 생각해봅니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants