Rubyの新機能ですが、非常に直感的な言語であることがわかりましたが、暗黙の戻り値がどのように動作するかを理解するのが難しいです。Rubyの暗黙の戻り値
私は、Tomcatのログをgrepし、該当するデータからパイプ区切りのCSVファイルを生成するための小さなプログラムを作成しています。ここでは、ログエントリから行を生成するために使用している簡単な例を示します。
class LineMatcher
class << self
def match(line, regex)
output = ""
line.scan(regex).each do |matched|
output << matched.join("|") << "\n"
end
return output
end
end
end
puts LineMatcher.match("00:00:13,207 06/18 INFO stateLogger - TerminationRequest[[email protected][accountNumber=0951714636005,srNumber=20]",
/^(\d{2}:\d{2}:\d{2},\d{3}).*?(\d{2}\/\d{2}).*?\[accountNumber=(\d*?),srNumber=(\d*?)\]/)
このコードを実行すると、出力の値を明示的に返すときに期待される以下のコードが返されます。
00:00:13,207|06/18|0951714636005|20
しかし、私は次のようにLineMatcher変更し、明示的に出力を返さない場合:
class LineMatcher
class << self
def match(line, regex)
output = ""
line.scan(regex).each do |matched|
output << matched.join("|") << "\n"
end
end
end
end
その後、私は次のような結果を得る:
明らか00:00:13,207
06/18
0951714636005
20
を、これではありません希望の結果私は出力変数を取り除くことができるはずですが、戻り値がどこから来ているのかは不明です。また、読みやすさのための他の提案/改善も歓迎します。
修正された書式 – csamuel