Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby和Groovy中的块之间有什么显著的区别吗?_Ruby_Groovy - Fatal编程技术网

Ruby和Groovy中的块之间有什么显著的区别吗?

Ruby和Groovy中的块之间有什么显著的区别吗?,ruby,groovy,Ruby,Groovy,我在Ruby中使用块,并希望在Java中使用它们。Groovy似乎提供了类似的特性,但我对Groovy了解不够,无法理解在语法和功能上是否存在任何显著差异 Ruby块是否等同于Groovy块?不是100%。Ruby块要求您命名所有参数(据我所知)。Groovy中不指定参数的块有一个隐含参数,it从某种意义上说,块只是一个任意函数。我从未编程过java,但这里有一些其他语言的代码示例,向您展示了块与传递匿名函数类似 红宝石: Javascript: var add_5 = function(cal

我在Ruby中使用块,并希望在Java中使用它们。Groovy似乎提供了类似的特性,但我对Groovy了解不够,无法理解在语法和功能上是否存在任何显著差异


Ruby块是否等同于Groovy块?

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

从某种意义上说,块只是一个任意函数。我从未编程过java,但这里有一些其他语言的代码示例,向您展示了块与传递匿名函数类似

红宝石:

Javascript:

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

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

换句话说,如果Java支持这样的匿名函数,那么你就有了一个障碍!因为它们是函数,所以它们可以接受参数,就像块一样。下面是另一个Lua示例:

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

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

我对Ruby不是100%熟悉,但我认为答案是否定的。请看一下。

不正确。Groovy确实支持块的命名参数。请参阅:Groovy当然支持块的命名参数。:-)我的意见是,在Groovy中,如果您的块使用一个参数,那么将其命名是可选的,而在Ruby中则是强制性的。
local function add_5(callback)
  print(callback() + 5);
end

add_5(function()
  return 20;
end)
-- returns 25
local function add_something(callback)
  callback(5 / 2);
end

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