Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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中的隐式收益率呢?_Ruby - Fatal编程技术网

Ruby中的隐式收益率呢?

Ruby中的隐式收益率呢?,ruby,Ruby,我经常写: some_array.each{| array_element | array_element.some_method(args)} 为什么不选择隐含收益率,以便您可以写下,例如: some_array.each{{uu.some_method(args)} 我不确定字符\uuu实际上应该是什么,我想它只会在大多数样板设置中使用,在这种设置中,您处理的是一维数组,只是试图将每个项连续地交给块。它将节省大量的冗余输入。您熟悉方法调用的\to#u proc和&语法吗?它们涵盖了一些类似于

我经常写:

some_array.each{| array_element | array_element.some_method(args)}

为什么不选择隐含收益率,以便您可以写下,例如:

some_array.each{{uu.some_method(args)}


我不确定字符
\uuu
实际上应该是什么,我想它只会在大多数样板设置中使用,在这种设置中,您处理的是一维数组,只是试图将每个项连续地交给块。它将节省大量的冗余输入。

您熟悉方法调用的
\to#u proc
&
语法吗?它们涵盖了一些类似于您在这里展示的案例。例如:

[1, -2, -4].map(&:abs) => [1, 2, 4]
class Symbol
  def with_args(*args)
    Proc.new { |x| x.send(self, *args) }
  end
end
&
用于传递对象以代替块。如果对象不是
Proc
,则会自动对其调用
#to_Proc
,以获得
Proc
,然后再使用它代替块
Symbol#to_proc
返回一个
proc
,其行为类似于:
{| obj,*args | obj.Symbol_name(*args)}

在您的示例中,您使用了
args
,它们可能是从周围的词汇环境中捕获的<代码>符号#to_proc在这方面帮不了你。但是,要开发一种新的
Proc
构建方法并不难,它将。例如:

[1, -2, -4].map(&:abs) => [1, 2, 4]
class Symbol
  def with_args(*args)
    Proc.new { |x| x.send(self, *args) }
  end
end
然后你可以做:

some_array.each(&:some_method.with_args(args))

这是否比显式块更好取决于您。无论如何,这是一种你应该注意的技巧。

有趣的想法。这种实现可能是一个问题,但这是一个细节:
classa;DEFA;打招呼;结束;结束
=A.new
,\u.A#=>hi`。