Ruby 在返回数组.inject(:+;)+;初始值,什么是+&引用;什么意思?

Ruby 在返回数组.inject(:+;)+;初始值,什么是+&引用;什么意思?,ruby,Ruby,是接线员吗?如果是,如何使用?或者它指向什么? 我已经在inject方法中寻找了它的用法示例,但我真正能收集到的是它在某种程度上像{sum,n{sum+n}。:+是一个符号 你可以在IRB中看到它: > :+.class => Symbol 在此上下文中,它实际上表示将由inject调用的+方法,而不是块 您可以自己动态调用它,如下所示: > 5.send(:+, 3) => 8 这相当于: > 5 + 3 => 8 :+是一个符号 你可以在IRB中看到

是接线员吗?如果是,如何使用?或者它指向什么?
我已经在inject方法中寻找了它的用法示例,但我真正能收集到的是它在某种程度上像{sum,n{sum+n}。

:+
是一个符号

你可以在IRB中看到它:

> :+.class
=> Symbol
在此上下文中,它实际上表示将由
inject
调用的
+
方法,而不是块

您可以自己动态调用它,如下所示:

> 5.send(:+, 3)
=> 8
这相当于:

> 5 + 3
=> 8

:+
是一个符号

你可以在IRB中看到它:

> :+.class
=> Symbol
在此上下文中,它实际上表示将由
inject
调用的
+
方法,而不是块

您可以自己动态调用它,如下所示:

> 5.send(:+, 3)
=> 8
这相当于:

> 5 + 3
=> 8
你可以查一下

还有这个

然后你就会完全明白:)

你可以检查这个

还有这个


然后您将完全理解:)

感谢您抽出时间回答!感谢您抽出时间回答!非常感谢,这使事情变得明朗了一点。所以任何以“:”开头的东西都是一个符号。所以我知道在ruby中不能将运算符作为参数传递给函数/方法。尽管这似乎是一个实际的解决方法,对吗?@user3827668,您不能将任何方法作为参数传递。为什么?因为在ruby中,当您编写dostuff这样的方法名时,ruby会执行该方法——括号是可选的。因此,无论何时编写方法名,ruby都会执行该方法,从而无法传递该方法本身。因此,您必须传递一个方法名为“do_stuff”的字符串或一个符号,现在您可以假设它与字符串:dostuff相同,然后使用该字符串来执行该方法。因此“+”不是运算符,而是一个方法?非常感谢,这使它变得清晰了一点。所以任何以“:”开头的东西都是一个符号。所以我知道在ruby中不能将运算符作为参数传递给函数/方法。尽管这似乎是一个实际的解决方法,对吗?@user3827668,您不能将任何方法作为参数传递。为什么?因为在ruby中,当您编写dostuff这样的方法名时,ruby会执行该方法——括号是可选的。因此,无论何时编写方法名,ruby都会执行该方法,从而无法传递该方法本身。因此,您必须传递一个方法名为“do_stuff”的字符串或一个符号,现在您可以假设它与字符串:dostuff相同,然后使用该字符串执行该方法。因此“+”不是运算符,而是方法?