2012-10-07 2 views

답변

24

발동 사용하는 것 중 하나는 루비에서이 작업을 수행하는 방법에는 여러 가지가 있습니다 :

foo=Proc.new do |test| 
    puts test 
end 

3.upto(8) { foo.call("hello world") } 

프로세서 수에 대해 자세히 알아보기 :

업데이트, 위의 방법을 다시 작성할 수 있습니다

# using lower-case **proc** syntax, all on one line 
foo = proc { |test| puts test } 
3.upto(8) { foo.call("hello world") } 

# using lambda, just switch the method name from proc to lambda 
bar = lambda { |test| puts test } 
3.upto(8) { bar.call("hello world") } 

이들은 기본적으로 매우 유사한 방법으로 미묘한 차이가 있습니다.

마지막으로, 제가 설명했던 것을 할 수있는보다 우아한 방법이 있습니다. 더 좋은 방법을 가진 사람의 의견을 듣는 것이 좋습니다. 희망이 도움이됩니다.

+2

고마워요. 링크를 위해. lambdas에 대한 언급도 포함시킬만큼 친절 할 수 있습니까? 역사적인 목적을 위해. –

+0

@Shingetsu, 나는 람다를 추가하고 업데이트했다. proc 접근 방식도 약간 단순화 된 버전이다. – stephenmurdoch

+3

@Shingetsu : Lambda는 역사적이지 않다. Procs 대신 거의 항상 * 사용해야합니다. 그들은 훨씬 더 완전하게 특색 지어지고 표준이다. – Linuxios