ワンライナーが欲しいですか?ここには1つのライナーがあります:
db_tables_scanned = resume and File.exists?(resume_log_file) ? Hash[IO.readlines(resume_log_file).map { |db_table| db_table.split(".").map(&:strip) if db_table.include? '.' }.compact] : {}
もちろんこのコードはひどいです。より少ないコード行を得ることに夢中になる必要はありません。コードは、にあります。
- は、人間が読める
- 言語のほとんどのフィッティングと慣用的抽象化を使用して下さい。この場合
、ラインにそれを破ると、ハッシュを構築するためにHash[pairs_of_keys]
を使用してみましょう:
db_tables_scanned = if resume and File.exists?(resume_log_file)
Hash[IO.readlines(resume_log_file).map do |db_table|
if db_table.include?('.')
db_table.split(".").first(2).map(&:strip)
end
end.compact]
else
{}
end
短い変数名を使用することにより。 – Thilo
変数名は自明でなければなりませんか? –