ruby
루비에서 람다식이란
Dexlee
2021. 12. 26. 22:46
루비를 사용한다면 람다식을 절대 빼놓고 설명할 수 없다.
루비 언어는 전통적인 for문을 사용하지 않고 list.each 함수를 사용한 후블록 문에 람다(이름 없는 함수)식을 넣어서 처리한다.
1년 동안 람다를 사용하면서 느낀 거지만, 루비에서 람다를 사용하는 이유는 편하고 직관적이고 이해하기 쉽고 적은 코드로 많은 내용을 표현할 수 있기 때문이라고 생각한다.
물론 단점은 람다식에 익숙하지 않으면 이 식에 적응하고 이해하는데 시간이 걸린다는 것이다.
자 그럼 람다식에 대한 예시를 들어보겠다.
1. 람다식 사용
ids = [1,2,3,4,5]
sheets = []
ids.each_slice(3) { |idxs| sheets += Sheet.where(id: idxs) }
블록에 서브 id 리스트를 넘겨주고, 그 아이디에 해당하는 값을 sheets에 저장시켜주는 코드이다.
each_slice(3)를 실행시키면 idxs = [1,2,3]이 리턴된다. 이 값을 |idxs|에서 파라미터로 받아 실행코드로 사용하는 것이다. 그다음 값인 [4,5]도 파라미터로 받아 실행코드로 사용하면 모든 실행코드가 종료된다. 즉, 블록 안에 있는 람다식까지 반복에 한 사이클이 된다.
이렇게 함수를 사용한 후, 그 결과값을 파라미터로 받아 바로 적용할 수 있게 해주는 강력한 도구가 람다식이다.
2. 람다식 사용 안 함.
ids = [1,2,3,4,5]
sheets = []
sub_ids = ids.each_slice(3)
for idxs in sub_ids
sheets += Sheet.where(id: idxs)
end
람다식을 사용하지 않는다면, 결과값을 다른 변수에 저장하고 그 변수로 loop문을 통해 접근해야 한다. 람다식을 사용하면 간단하게 만들 수 있는 코드를 3줄이나 더 써야 같은 의미를 만들 수 있는 것이다.
그리고 사이클도 두 번이 되어서 2배의 성능 저하를 일으킨다.