저는 Ruby에서 블록을 사용하며 자바로 사용하고자합니다. Groovy는 비슷한 기능을 제공하는 것 같지만 Groovy에 대해 구문과 기능에 중요한 차이가 있는지를 알기에는 충분하지 않습니다.Ruby와 Groovy의 블록간에 중요한 차이점이 있습니까?
Ruby 블록은 Groovy 블록과 동일합니까?
저는 Ruby에서 블록을 사용하며 자바로 사용하고자합니다. Groovy는 비슷한 기능을 제공하는 것 같지만 Groovy에 대해 구문과 기능에 중요한 차이가 있는지를 알기에는 충분하지 않습니다.Ruby와 Groovy의 블록간에 중요한 차이점이 있습니까?
Ruby 블록은 Groovy 블록과 동일합니까?
100 %. 루비 블록을 사용하려면 모든 매개 변수의 이름을 지정해야합니다 (아는 한). Groovy에서 매개 변수를 지정하지 않은 블록은 암시 적 매개 변수 인 it
을가집니다.
블록은 의미없는 기능입니다. 나는 자바 프로그래밍을 해 본 적이 없지만, 블록이 익명의 함수를 전달하는 것과 비슷하다는 것을 다른 언어로 보여주는 몇 가지 코드 샘플이있다.
루비 :
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
저는 루비에 100 % 익숙하지 않지만, 대답은 '아니오'라고 생각합니다. doc을 살펴보십시오.
올바르지 않습니다. Groovy는 명명 된 매개 변수를 지원하여 차단합니다. 참조 : http://groovy.codehaus.org/JN2515-Closures#JN2515-Closures-ClosureParameters – jiggy
물론 Groovy는 블록에 대한 명명 된 매개 변수를 지원합니다. :-) 내 의견은 Groovy에서 블록이 하나의 매개 변수를 사용하는 경우 이름 지정은 선택 사항 인 반면 Ruby에서는 필수 항목입니다. –
죄송합니다, 잘못 읽었습니다 :) – jiggy