2009-04-20 33 views

回答

6

不是100%。 Ruby塊要求你命名所有參數(據我所知)。 Groovy中沒有指定參數的塊有一個隱含參數,it

+0

錯誤。 Groovy確實支持命名參數來阻止。請參閱:http://groovy.codehaus.org/JN2515-Closures#JN2515-Closures-ClosureParameters – jiggy 2009-04-22 19:54:25

1

塊在某種意義上只是一種任意的功能。我從來沒有編寫java程序,但是這裏有一些其他語言的代碼示例,告訴你程序塊類似於傳遞匿名函數。

紅寶石:

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 

換句話說,如果Java支持這樣的匿名函數,你擁有屬於自己的塊!由於它們是功能,它們可以像塊一樣接受爭論。這裏是另一個Lua的例子:

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

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

我對Ruby不是100%熟悉,但我認爲答案是否定的。看看doc

相關問題