2009-04-20 5 views

답변

6

100 %. 루비 블록을 사용하려면 모든 매개 변수의 이름을 지정해야합니다 (아는 한). Groovy에서 매개 변수를 지정하지 않은 블록은 암시 적 매개 변수 인 it을가집니다.

+0

올바르지 않습니다. Groovy는 명명 된 매개 변수를 지원하여 차단합니다. 참조 : http://groovy.codehaus.org/JN2515-Closures#JN2515-Closures-ClosureParameters – jiggy

+3

물론 Groovy는 블록에 대한 명명 된 매개 변수를 지원합니다. :-) 내 의견은 Groovy에서 블록이 하나의 매개 변수를 사용하는 경우 이름 지정은 선택 사항 인 반면 Ruby에서는 필수 항목입니다. –

+0

죄송합니다, 잘못 읽었습니다 :) – jiggy

1

블록은 의미없는 기능입니다. 나는 자바 프로그래밍을 해 본 적이 없지만, 블록이 익명의 함수를 전달하는 것과 비슷하다는 것을 다른 언어로 보여주는 몇 가지 코드 샘플이있다.

루비 :

def add_5 
    puts yield + 5 
end 

add_5 { 20 } 
# => 25 

자바 스크립트 :

var add_5 = function(callback){ 
    return callback.call() + 5; 
} 

add_5(function(){ return 20 }); 
// returns 25 

루아 : 즉

local function add_5(callback) 
    print(callback() + 5); 
end 

add_5(function() 
    return 20; 
end) 
-- returns 25 

, 자바 그런 익명의 기능을 지원하는 경우, 당신은 블록은 자신있어! 함수이기 때문에 블록처럼 인수를 취할 수 있습니다. 여기에 또 다른 루아 예제가 있습니다 :

local function add_something(callback) 
    callback(5/2); 
end 

add_something(function(a) 
    print(a + 5); 
end) 
-- 7.5 
0

저는 루비에 100 % 익숙하지 않지만, 대답은 '아니오'라고 생각합니다. doc을 살펴보십시오.

관련 문제