본문 바로가기

람다

(4)
Kotlin 공식 Example로 공부하기 - Functional(Higher-Order Functions, lambda, extension functions) Functional 저는 전문 번역가도 아니고, 의역을 넘어 오역, 심지어 그냥 제가 읽고 싶은대로 읽은 내용이 있을 수 있습니다. 개인 공부를 한 것을 포스트로 남기고 있으며 틀린 부분이 있으면 지적해주시면 수정하도록 하겠습니다. 원문 : https://play.kotlinlang.org/byExample/04_functional/01_Higher-Order Functions Higher-Order Functions(고차 함수) 고차함수(Higher-Order function)는 다른 함수를 파라미터로 사용하거나 함수를 반환하는 함수입니다. 함수를 함수의 파라미터로 쓸 때 fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int { // 1 r..
자바 람다에서 final이거나 final처럼 쓰인 지역 변수만 접근할 수 있는 이유 Java lambda effectively final local variable 1. 자바 람다에서 final이거나 final처럼 쓰인 지역 변수에만 접근할 수 있는 이유 면접에서 또 하나 배워왔습니다. (기술 면접에서 떨어졌지만...ㅜㅜ) 먼저 질문부터 말씀드리면 원래 질문은 "Anonymous Inner Class에서 외부의 지역 변수에 접근할 때 final처럼 쓰여야만 가능한데 왜 그렇게 동작하는지에 대해 자유롭게 답을 해보라"는 질문이었습니다. 답변은 제대로 못했는데 나름대로 생각하기를 뭔가 동시성 문제가 있지 않을까?하고 단순하게 이정도만 생각하고 답변했던 것 같습니다. (근거도 없이...) (물론 final 키워드로 지정된 변수는 재할당을 못하게 할뿐이지 동시성 문제를 해결하는 키워드는 아닙니..
자바 람다(Java Lambda) 단 하나의 abstract method를 구현하는 함수 자바 람다 입문 1. 람다란? 단 하나의 abstract method를 갖는 인터페이스를 구현한 익명 클래스 인스턴스를 표현하는 함수다. (필자가 생각한 정의다.) 만약, 익명 클래스를 축약 표현(syntactic sugar)한 거라고 생각하면 되냐?! 라고 한다면 그건 또 아니다. 익명클래스는 내부 변수를 가질 수 있으나 람다는 불가능하다. this가 가리키는 것도 다르고 내부 동작도 좀 다르다고 한다. (근데 람다를 쓰면 익명의 클래스가 생성됨) '람다식' 이라고도 표현하는데 대부분 람다를 쓸 때 표현식 즉, "코드 조각"으로 구현하기 때문에 그렇지 않을까한다. 2. 람다는 어떤 문제를 해결하기 위한 기술인가? 자바에서 람다는 함수형 프로그래밍 패러다임으로 전환하기 위한 하나의 '단계'다. 따라서 람..
자바 스트림(Stream) API 정리, 스트림을 이용한 가독성 좋은 코드 만들기(feat. 자바 람다, 함수형 프로그래밍, 자바8) Java Stream 자바 공부를 하면서 Stream이 무엇인지, 어떻게 사용되고 있는지 인지는 하고 있었으나 실제 코드로 타이핑해보지 않았다.그러던 중 이번에 가볍게 API 훑어보는 식으로 공부를 하면서 코드를 쳐보면서 조금 더 익히게 되었다.Stream은 자바 8부터 추가된 기능으로 "컬렉션, 배열등의 저장 요소를 하나씩 참조하며 함수형 인터페이스(람다식)를 적용하며 반복적으로 처리할 수 있도록 해주는 기능"이다. (InputStream, OutputStream같은 I/O Stream이 아니다.)1234567891011121314List names = Arrays.asList("jeong", "pro", "jdk", "java");// 기존의 코딩 방식long count = 0;for (String ..