0

我一直在通过解决项目欧拉问题来学习 ruby​​,在一个问题的解决方案中,我看到你可以做类似"12341".chars.inject(1) { |prod, n| prod * n.to_i }.

我查看了 ruby​​ 文档,但找不到String#chars定义的位置。

谁能解释它是如何工作的?

4

3 回答 3

2

它不存在于 1.8.6 中,如果您查看http://ruby-doc.org/core/就会得到它,但它存在于1.8.71.9 文档中。

String#chars简单地返回一个Enumerator(一个提供Enumerable接口的类),它依次产生字符串的每个字符。这允许您调用injectwhich 将遍历 Enumerable 中的每个项目,将块应用于该项目和收集结果的值。在这种情况下,您从 value 开始1,并在每次迭代中将 value 乘以每个字符的整数值。

于 2010-09-10T20:30:04.933 回答
1

它记录在这里

于 2010-09-10T20:23:31.213 回答
0

Rails 的 ActiveSupport 最初也进行了猴子补丁String#chars。他们在答案中使用的是 Rails 还是 ActiveSupport?

于 2010-09-12T23:35:12.403 回答