다시 오신 것을 환영합니다
지난 영상에서 Lambda(람다) 표현식을 보았는데 제가 너무 아무것도 아닌 것처럼 급하게 설명했습니다
그래서 아주 헷갈렸을 것 같습니다
그래서
람다 표현식이 무엇이지? 생각하셨을 것입니다
이를 위해 짧은 이야기를 들어보겠습니다
여기 환상의 나라 코디아에 사는 라우라와 그녀의 마법 족자가 있습니다
어린 라우라는 마법 족자를 만드는 능력으로 유명했습니다
이 족자는 평범한 족자가 아니었습니다
이 족자로 주문이 보이지 않아도 마법을 부릴 수
있었습니다
이 족자의 조밀함과 유연성 때문에 코디아인들이 매우 원했습니다
어느 날 마을 사람이 라우라에게 다가와 내가 속삭이는 어느 숫자든 배로 늘릴 수 있는 족자가
필요하다고 부탁했습니다
라우라는 빛나는 눈으로 족자를 빠르게 만들어 전달했습니다
그 마을 사람이 족자에 5라고 속삭이니 족자가 10이라고 대답했습니다
옆에서 지켜보던 구경꾼들도 족자가 작동하는 방법을 궁금해 했습니다
라우라는 이를 코디아의 프로그래밍 세상의 람다 족자라고 생각할 수 있다고 설명했습니다
이들은 마치 Kotlin 람다 표현식과 같습니다
이들은 짤막한 마법 또는 코드로 값을 변환하기 위해
긴 주문 또는 함수가 필요 없습니다
지금까지 람다 표현식에 대한 간단한 소개를
이야기로 풀어봤습니다
이제 코드를 살펴보기 위해 애플리케이션에 넣어서
간단하게 보겠습니다
여기 버튼이 있습니다
버튼은 단순히 텍스트이기 때문에 여기 버튼을 예시로 사용하겠습니다
Add Item 대신에 계산의 결과 값을 넣겠습니다
여기에 람다를 만들고 이름을 doubleNumber라고 합니다
이와 같이 작동할 것입니다
콜론(:)을 사용하고
입력으로 사용할 유형을 넣습니다
그리고 대시(-)와 화살표 또는 이상 기호(〉)를 넣고
등호(=) 다음에 원하는 로직을 도입합니다
저는 it 곱하기(*) 2를 넣을 것입니다
이를 통해
그런 후 화살표 다음에 출력 유형을 넣습니다
그 다음 계산 또는 코드 실행를 배정하고 int 유형을
결과로 출력할 것입니다
어떻게 이와 같이 작동하는 것일까요?
여기서 기본적으로 코드가 어떻게 생겨야 하는지 정한 것입니다
이제 코드가 계산을 하는데 it 곱하기 2입니다
여기서 it은 무엇일까요?
it은 우리가 입력으로 정한 아무거나입니다
이해하셨나요?
따라서 2배인 숫자는 double(더블) 유형의 숫자가 아니고
입력한 숫자의 2배가 되는 것입니다
이제 Add Item 대신에 doubleNumber를 사용하여
int를 통과시킵니다
그리고 다시 string(스트링)으로 변환합니다
따라서 여기 toString은 텍스트가 보이기 위한 것입니다
여기서 중요한 것은 이 부분입니다
람다 함수를 '부르고' 여기에 5를 전달하는 것입니다
이제 이 코드를 실행하여 위의 텍스트가 어떤지 확인하겠습니다
좋습니다
여기 10이라고 보입니다 5 곱하기 2는 10이기 때문입니다
이제 무슨 일이 발생했는지 살펴 보겠습니다
여기에 람다를 사용했습니다
이것이 람다 표현식입니다
이를 doubleNumber라는 변수에 저장하는 것입니다
이제 이 변수는 함수라고 부를 수 있습니다
내부적으로는 사실상 함수입니다
즉, 이것이 람다 함수 또는 람다 표현식입니다
이제부터 이 괄호 사이에 있는 것을 무엇이든 전달할 수 있습니다
이 괄호 안에 Int는 다시 말하자면
doubleNumber라는 함수를 부르기 위해 Int를 통과시켜야 한다는 의미입니다
그리고 돌려받는 것도 Int가 됩니다
그리고 결과 자체 즉, 함수를 부를 때 실행되는 것은 여기 이 부분에 있는 내용입니다
이 부분이 의미하는 것은 이 it가 전달한 파라미터
이고
우리의 경우 5 이며 이를 곱하지 2합니다
이제 이 결과가 자동적으로 doubleNumber에 저장됩니다
따라서 결과는 10이 되고 스트링으로 출력하여
텍스트로 보이는 것입니다
좋습니다
이제 다시 Add Item으로 복구하고 doubleNumber를 삭제합니다
버튼에 텍스트만 보여주고 싶기 때문입니다
일반적으로 UI 요소에 복잡한 로직이 있는 경우 사용하는 방법이 아닙니다
이는 단지 빠르게 보여드리기 위한 것으로 앱이 망가지지 않도록 간단한 계산을
보여드렸습니다
여기에 아주 복잡한 계산이 들어갔다면 UI thread가
즉 사용자 인터페이스의 모양을 계산하는 계산기
또는 프로세서가
얼고 애플리케이션도 얼게될 것입니다
발생할 수 있는 최악의 상황입니다
다시 쇼핑 목록으로 돌아가
onEditClick을 보면
여기에도 람다 표현식이 보입니다
유일한 차이점은 입력을 넣지 않는다는 것입니다
입력도 없고 Unit 즉, 출력도 없다는 것입니다
따라서 입력과 출력 모두 없는 람다 표현식이지만 실행할 코드는 있다는 것입니다
따라서 원하는 무엇이든 실행할 수 있는 자유가 있습니다
통과해야 하는 특정 유형이 있는 것이 아니고
특정 유형의 결과도 필요 없습니다
많은 자유를 줍니다
지금까지 여기에서 발생하는 것을 설명 드렸습니다
좋습니다
오늘은 여기까지고 다음 영상에서 뵙겠습니다