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
fonte
2009-04-20 11:30:10
errato. Groovy supporta i parametri denominati da bloccare. Vedi: http://groovy.codehaus.org/JN2515-Closures#JN2515-Closures-ClosureParameters – jiggy
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. –
Scusa, ho letto male :) – jiggy