我一直在通过解决项目欧拉问题来学习 ruby,在一个问题的解决方案中,我看到你可以做类似"12341".chars.inject(1) { |prod, n| prod * n.to_i }
.
我查看了 ruby 文档,但找不到String#chars
定义的位置。
谁能解释它是如何工作的?
它不存在于 1.8.6 中,如果您查看http://ruby-doc.org/core/就会得到它,但它存在于1.8.7和1.9 文档中。
String#chars
简单地返回一个Enumerator(一个提供Enumerable接口的类),它依次产生字符串的每个字符。这允许您调用inject
which 将遍历 Enumerable 中的每个项目,将块应用于该项目和收集结果的值。在这种情况下,您从 value 开始1
,并在每次迭代中将 value 乘以每个字符的整数值。
它记录在这里。
Rails 的 ActiveSupport 最初也进行了猴子补丁String#chars
。他们在答案中使用的是 Rails 还是 ActiveSupport?