这行代码可以变得更紧凑吗?
db_tables_scanned = {}
IO.readlines(resume_log_file).each { |db_table| db_tables_scanned[db_table.split(".")[0].strip] << db_table.split(".")[1].strip if db_table.include? '.' } if resume and File.exists?(resume_log_file)
答案 0 :(得分:3)
你想要一个单行程?这是一个单行:
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