2008년 02월 01일
lambda와 Proc
class Array
def matches_block( &some_block )
find_all( &some_block)
end
def matches_proc( some_proc )
find_all( some_proc )
end
end
irb(main):009:0> digits = (0..9).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
irb(main):010:0> digits.matches_block { |x| x > 5 }
=> [6, 7, 8, 9]
irb(main):011:0> digits.matches_proc( lambda { |x| x > 5 } )
=> [6, 7, 8, 9]
메소드가 block을 받게 하려면 '&'를 붙여 주어야 한다.
lambda 메소드에 block을 넘긴 결과가 Proc 이 된다.
전체 결과를 보면 block을 넘기느냐 Proc을 넘기느냐의 차이뿐 결과는 같다.
def matches_block( &some_block )
find_all( &some_block)
end
def matches_proc( some_proc )
find_all( some_proc )
end
end
irb(main):009:0> digits = (0..9).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
irb(main):010:0> digits.matches_block { |x| x > 5 }
=> [6, 7, 8, 9]
irb(main):011:0> digits.matches_proc( lambda { |x| x > 5 } )
=> [6, 7, 8, 9]
메소드가 block을 받게 하려면 '&'를 붙여 주어야 한다.
lambda 메소드에 block을 넘긴 결과가 Proc 이 된다.
전체 결과를 보면 block을 넘기느냐 Proc을 넘기느냐의 차이뿐 결과는 같다.
# by | 2008/02/01 14:05 | 트랙백



☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]