私はプロジェクトオイラーの問題を解決することでルビーを学んでいますが、問題の1つの解決策として、次のようなことができることがわかりました"12341".chars.inject(1) { |prod, n| prod * n.to_i }
。
Rubyのドキュメントを見ましたが、どこString#chars
が定義されているのかわかりません。
誰かがそれがどのように機能するか説明できますか?
これは、 http: //ruby-doc.org/core/を見ると得られる1.8.6には存在しませんが、1.8.7および1.9のドキュメントには存在します。
String#chars
文字列の各文字を順番に生成する列挙子( Enumerableインターフェイスを提供するクラス)を返すだけです。inject
これにより、Enumerable内の各アイテムを反復処理し、そのアイテムにブロックを適用し、結果を収集する値を呼び出すことができます。この場合、値から始めて、1
各反復で値に各文字の整数値を掛けます。
ここに文書化されています。
RailsのActiveSupportも元々monkeypatchedでしString#chars
た。彼らは答えにRailsまたはActiveSupportを使用していましたか?