2009-11-16 6 views

답변

5

Lambdas (다른 언어에도 존재 함)는 일부 복잡한 작업을 수행하는 것이 아니라 단순한 용도로만 작성되는 특수 기능과 같습니다.

Array#collect과 같은 방법으로 {} 블록을 사용하는 경우 해당 메소드 만 사용하는 람다/proc/블록을 만드는 것입니다.

a = [1, 2, 3, 4] 
# Using a proc that returns its argument squared 
# Array#collect runs the block for each item in the array. 
a.collect {|n| n**2 } # => [1, 4, 9, 16] 
sq = lambda {|n| n**2 } # Storing the lambda to use it later... 
sq.call 4 # => 16 

은 위키 백과에 Anonymous functions를 참조하고, lambdaProc의 뉘앙스에 대한 몇 가지 other SO questions.

+0

위의 예에서는 람다 없이도 계속 수행 할 수 있습니다. 블록이 본문 인 다음 루프에 대한 수집과 동일하지 않습니까? 나는 그 블록을 사용하는 것의 이점을 보려고 애 쓰고있다. – Zubair

+0

물론 for 루프로도 할 수 있지만, 좀 더 우아하고 Ruby-ish 방법입니다. 다른 방법은 루프로 복제하기가 더 어려울 수 있습니다. – jtbandes

+0

좋아, 아마도 내가 람다와 프록스에게 할 수있는 일이 너무 길다는 것을 아는 것이 유용 할 것 같다. – Zubair