ruby将puts应用于数组

ruby将puts应用于数组,ruby,Ruby,对于数组元素响应的方法,我可以 [1,2,3].each(&:to_s) 但对于: [1,2,3].each {|i| puts i} 我不能这样做: [1,2,3].each(&:puts) 如何将Kernel方法(如put)优雅地应用于数组中的对象?是否还有更为鲁比的方法?puts是一种方法,定义在内核上,用于将其转换为程序,使用: [1,2,3].each(&method(:puts)) 具有特定的含义,基本上是将自身发送给接收者 可以将任何方法转换为pro

对于数组元素响应的方法,我可以

[1,2,3].each(&:to_s)
但对于:

[1,2,3].each {|i| puts i}
我不能这样做:

[1,2,3].each(&:puts)

如何将
Kernel
方法(如
put
)优雅地应用于数组中的对象?是否还有更为鲁比的方法?

puts
是一种方法,定义在
内核上,用于将其转换为
程序,使用:

[1,2,3].each(&method(:puts))
具有特定的含义,基本上是将自身发送给接收者

可以将任何方法转换为
proc
,以将其传递给块:

%w[1 2 3].map(&method(:Integer))
#⇒ [1, 2, 3]

put
是一种方法,在
Kernel
上定义,用于将其转换为
proc
,使用:

[1,2,3].each(&method(:puts))
具有特定的含义,基本上是将自身发送给接收者

可以将任何方法转换为
proc
,以将其传递给块:

%w[1 2 3].map(&method(:Integer))
#⇒ [1, 2, 3]

最后一个例子是惯用Ruby:

[1,2,3]。每个{x|放置x}

当然还有其他方法可以做同样的事情,但是上面的代码非常简单,任何Ruby开发者都可以轻松理解。

最后一个例子是惯用Ruby:

[1,2,3]。每个{x|放置x}


当然,还有其他方法可以做同样的事情,但是上面的代码很简单,任何Rubyist都很容易理解。

你的最后一个例子对我来说很像ruby…
puts[1,2,3]
?你的最后一个例子对我来说很像ruby…
puts[1,2,3]
?谢谢。正是我想要的。现在,我只需要等待10分钟,然后允许我将其标记为“答案”,以便对其他阅读方进行扩展。在本例中,主要的
&
是通过对象的
to_proc
方法将参数转换为块。例如
&:to_s
(如问题中的
符号#to_proc
)和
方法(:put)
(如答案中所示)是
方法#to_proc
。对于
Symbol#to_proc
is,它将
Symbol
发送到块参数,其中as
Method#to_proc
将块参数发送到
方法
这很简洁,但我认为最后一个示例更惯用,更重要的是,比这些示例更容易理解……谢谢。正是我想要的。现在,我只需要等待10分钟,然后允许我将其标记为“答案”,以便对其他阅读方进行扩展。在本例中,主要的
&
是通过对象的
to_proc
方法将参数转换为块。例如
&:to_s
(如问题中的
符号#to_proc
)和
方法(:put)
(如答案中所示)是
方法#to_proc
。对于
Symbol#to_proc
is,将
Symbol
发送到块参数,其中as
Method#to_proc
将块参数发送到
Method
这很简洁,但我认为最后一个示例更为惯用,更重要的是,比这些例子更容易理解…这永远不会通过我的CR。Ruby是为了语法加糖而发明的,它应该有这种语法加糖的用法。@mudasobwa我想我们在这里有不同的观点-对我来说,简单和清晰比加糖更重要。never是一个强有力的词。在我看来,编程中很少有东西应该使用“从不”或“始终”这个词。在这一点上,我必须同意@maerics。代码是写的,是的;但最终,代码是要被读取的。它由你未来的自己和下一个需要维护你的代码的人来阅读。在可能使用速记的地方使用显式块不会带来额外的简单性和清晰度。与使用“get”代替所有其他动词一样,使用“get”并不能提高英文文本的可读性。符号符号是ruby的核心,如果它降低了开发人员流畅阅读的能力,我首先会质疑开发人员的专业知识/技能。是的,我禁止使用
{e|e.to__}
,而不是
(&:to_})
明确地说是为了可读性和简单性,而不是相反。这让我觉得他们不理解基本知识,我付出了一些努力让他们理解。这永远不会通过我的CR。Ruby是为了语法糖化而发明的,它应该有这种语法糖化用法的能力。@mudasobwa我想我们在这里有不同的意见-对我来说,简单和清晰比糖更重要。从不是一个强有力的词。在我看来,编程中很少有东西应该使用“从不”或“始终”这两个词。在这一点上,我必须同意@maerics。代码是编写的,是的;但最终,代码是要被阅读的。它由你未来的自己和下一个必须维护你的代码的人来阅读。Usin一个可以使用速记的显式块不会带来额外的简单性和清晰性“与所有其他动词相反,并不能使英文文本更具可读性。符号符号是ruby的核心,如果它降低了开发人员流畅阅读的能力,我首先会质疑开发人员的专业知识/技能。是的,我禁止
{e|e.to_s}
而不是
(&:to_s)
明确地说是为了可读性和简单性,而不是为了可读性和简单性。这让我觉得他们不了解基础知识,我付出了一些努力让他们理解。