文字列検索をするメソッドを書いてみた
String#indexがあるので車輪の再発明ですが, Enumerableのメソッド, Enumeratorオブジェクトを理解するために単純に文字列検索をするメソッドをかいてみました.
# coding: utf-8 def simple_search(text, pattern) text.chars.each_cons(pattern.size).each do |chars| return true if chars.join == pattern end return false end if $0 == __FILE__ text = "Team Swift" pattern = "if" puts simple_search(text, pattern) # true end
少し書き方が冗長かもしれないですね. Enumerableには関数型言語でお馴染みのmapやinject, selectなどが定義されています. これらを組合わせるとどうしても横に長いコードになってしまうので, 可読性に気をつけながら使っていくべき? それともメソッドチェーンでコレクションを操作していくから分かりやすい?(僕は前者な気がするのだが)
Enumerableに限らず, Rubyは標準で豊富なライブラリを抱えています. それらに一通り目を通しておいて, 不要なコードを書かないように心がけていきたいですね.