injectの練習問題
与えられた単語のリストから、もっとも多く母音が含まれる単語を返す。というのは、injectを使う例として恣意的に考え付いた練習問題だけど。ついでにString#scanも使ってみたかった。
class String def number_of_vowels scan(/[aiueo]/).size end alias size number_of_vowels end words = %w[apple banaaaaaaana orange grape] puts words.inject{|mostv,w| w.size > mostv.size ? w : mostv } # banaaaaaaana
なるほど、injectは初期値を省略するとselfの最初の要素が代入されるので、こんなことができる。