2009-04-20 8 views

Répondre

6

Non 100%. Les blocs Ruby vous obligent à nommer tous vos paramètres (pour autant que je sache). Un bloc dans Groovy qui ne spécifie pas de paramètres a un paramètre implicite, it.

+0

Incorrect. Groovy supporte les paramètres nommés à bloquer. Voir: http://groovy.codehaus.org/JN2515-Closures#JN2515-Closures-ClosureParameters – jiggy

+3

Bien sûr, Groovy prend en charge les paramètres nommés pour les blocs. :-) Mon commentaire est que dans Groovy, si votre bloc prend un paramètre, le nommer est optionnel --- alors que dans Ruby c'est obligatoire. –

+0

Désolé, j'ai mal lu :) – jiggy

1

Un bloc est en quelque sorte une fonction indifférente. Je n'ai jamais programmé Java, mais voici quelques exemples de code pour d'autres langues pour vous montrer que les blocs sont similaires aux fonctions anonymes.

Ruby:

def add_5 
    puts yield + 5 
end 

add_5 { 20 } 
# => 25 

Javascript:

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

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

Lua:

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

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

En d'autres termes, si Java prend en charge les fonctions anonymes comme ça, vous vous avez un bloc! Comme ce sont des fonctions, ils peuvent prendre des arguments, tout comme les blocs. Voici un autre exemple Lua:

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

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

Je ne suis pas 100% familier avec Ruby, mais je pense que la réponse est non. Jetez un oeil à la doc.

Questions connexes