我是Ruby的新手,所以想知道并学习如何干。我有2个if语句非常相似,无论如何重构它?
msg1,msg2 = msg.split('.')
if !msg1.nil?
items = msg1.split(',')
items.each do |item|
item.strip!
end
somefunction(items)
end
if !msg2.nil?
items = msg2.split(',')
items.each do |item|
item.strip!
end
somefunction(items)
end
答案 0 :(得分:4)
看起来你可以废除这两个变量:
msg.split('.').each do |msg|
items = msg.split(',').map(&:strip)
somefunction(items)
end
修改:我删除了unless
,因为split
创建的数组不包含任何内容。在原始代码中,如果数组包含0或1个元素,则有意义,但使用each
则不需要这样做。
答案 1 :(得分:1)
我们可以在一行中写出相同的内容。
message.split('.').each{|msg| somefunction msg.split(',').collect(&:strip) }