我是铁杆和红宝石的新手...... 我如何重构这样的代码,从csv文件数据导入? 现在我有这样的代码
if row[qnt].to_s != ""
eqnt = /(\d+)/.match(row[qnt])[0].to_s
else
eqnt = 0
end
我尝试像
这样的东西if row[qnt].present?
eqnt = /(\d+)/.match(row[qnt])[0].to_s
else
eqnt = 0
end
但它是否相同,还有什么我可以做的才能让代码更小?
答案 0 :(得分:1)
这个怎么样?
row[qnt].present? ? eqnt = /(\d+)/.match(row[qnt])[0].to_s : eqnt = 0
答案 1 :(得分:0)
我不相信代码会通过尝试进一步压缩它来获得可读性。
eqnt = row[qnt].present? ? /(\d+)/.match(row[qnt])[0].to_s : 0
或者
eqnt = 0
eqnt = /(\d+)/.match(row[qnt])[0].to_s if row[qnt].present?
或者
theRow = row[qnt]
eqnt = theRow.present? ? /(\d+)/.match(theRow).first.to_s : 0
或者更好的是,将其提取到方法中,保持主线代码清洁,并隔离逻辑。
我对eqnt
以不同类型结尾感到很兴奋,除非这是设计上的。
答案 2 :(得分:0)
eqnt = (/(\d+)/.match(row[qnt]) || [0])[0]