2009-04-20 14 views

risposta

6

Non 100%. I blocchi di Ruby richiedono di nominare tutti i parametri (per quanto ne so). Un blocco in Groovy che non specifica i parametri ha un parametro implicito, it.

+0

errato. Groovy supporta i parametri denominati da bloccare. Vedi: http://groovy.codehaus.org/JN2515-Closures#JN2515-Closures-ClosureParameters – jiggy

+3

Ovviamente Groovy supporta i parametri denominati per i blocchi. :-) Il mio commento è che in Groovy, se il tuo blocco accetta un parametro, nominarlo è opzionale --- mentre in Ruby è obbligatorio. –

+0

Scusa, ho letto male :) – jiggy

1

Un blocco è in un certo senso solo una funzione qualsiasi. Non ho mai programmato java, ma qui ci sono alcuni esempi di codice per altri linguaggi per mostrare che i blocchi sono simili al passaggio di funzioni anonime.

Rubino:

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 

In altre parole, se Java supporta funzioni anonime del genere, ti cerchi un blocco! Poiché sono funzioni, possono prendere argomenti, proprio come i blocchi. Ecco un altro esempio Lua:

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

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

Non conosco al 100% Ruby, ma penso che la risposta sia no. Dai uno sguardo allo doc.

Problemi correlati