Где в документе ruby ​​определен string.chars? - PullRequest
0 голосов
/ 11 сентября 2010

Я изучал ruby, решая задачи проекта Эйлера, и в одном решении проблемы я видел, что вы могли бы сделать что-то вроде "12341".chars.inject(1) { |prod, n| prod * n.to_i }.

Я просмотрел документацию по ruby, но не могу найти, где определено String#chars.

Может кто-нибудь объяснить, как это работает?

Ответы [ 3 ]

2 голосов
/ 11 сентября 2010

Его нет в 1.8.6, это то, что вы получите, если посмотреть на http://ruby -doc.org / core / , но оно присутствует в 1.8.7 и 1,9 документации .

String#chars просто возвращает Enumerator (класс, обеспечивающий интерфейс Enumerable ), который возвращает каждый из символов строки по очереди. Это позволяет вам вызывать inject, который будет перебирать каждый из элементов в Enumerable, применяя блок к этому элементу и значение, в котором вы собираете результаты. В этом случае вы начинаете со значения 1 и на каждой итерации умножаете значение на целочисленное значение каждого символа.

1 голос
/ 11 сентября 2010

Это задокументировано здесь .

0 голосов
/ 13 сентября 2010

Rails 'ActiveSupport изначально также исправил String#chars. Использовали ли они в ответе Rails или ActiveSupport?

...