Ruby与Groovy中的块之间是否存在显着差异?

时间:2009-04-20 03:49:53

标签: ruby groovy

我在Ruby中使用块,并希望在Java中使用它们。 Groovy似乎提供了类似的功能,但我不太了解Groovy以了解语法和功能是否存在任何显着差异。

Ruby块是否等同于Groovy块?

3 个答案:

答案 0 :(得分:6)

不是100%。 Ruby块要求您命名所有参数(据我所知)。 Groovy中未指定参数的块具有一个隐含参数it

答案 1 :(得分: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

答案 2 :(得分:0)

我不是100%熟悉Ruby,但我认为答案是否定的。看看doc