我做了一个非常好的黑客并削减了原始代码,但是我没有看到任何方法来缩小这个较小的,而不将支票放入模块中的另一个文件。每当/ x /时,正则表达式文本都是不同的,所以它们不能再被我想到的任何组合
case state
when /OH|PA|MN/
if @browser.text.include?("My text")
raise "x" unless /foo/.match(@browser.text)
raise "y" unless /foo2/.match(@browser.text)
raise "z" unless /foo3/.match(@browser.text)
else
raise "x1" unless /foofoo/.match(@browser.text)
raise "y1" unless /foofoo2/.match(@browser.text)
raise "z1" unless /foofoo3/.match(@browser.text)
end
when /IL|VA/
if @browser.text.include?("My text")
raise "x" unless /foo/.match(@browser.text)
raise "y" unless /foo2/.match(@browser.text)
raise "z" unless /foo3/.match(@browser.text)
else
raise "x1" unless /foofoo/.match(@browser.text)
raise "y1" unless /foofoo2/.match(@browser.text)
raise "z1" unless /foofoo3/.match(@browser.text)
end
when /WI|SC|TN|IN|IA/
if @browser.text.include?("My text")
raise "x" unless /foo/.match(@browser.text)
raise "y" unless /foo2/.match(@browser.text)
raise "z" unless /foo3/.match(@browser.text)
else
raise "x1" unless /foofoo/.match(@browser.text)
raise "y1" unless /foofoo2/.match(@browser.text)
raise "z1" unless /foofoo3/.match(@browser.text)
end
when /SC/
if @browser.text.include?("My text")
raise "x" unless /foo/.match(@browser.text)
raise "y" unless /foo2/.match(@browser.text)
raise "z" unless /foo3/.match(@browser.text)
else
raise "x1" unless /foofoo/.match(@browser.text)
raise "y1" unless /foofoo2/.match(@browser.text)
raise "z1" unless /foofoo3/.match(@browser.text)
end
when /GA/
if @browser.text.include?("My text")
raise "x" unless /foo/.match(@browser.text)
raise "y" unless /foo2/.match(@browser.text)
raise "z" unless /foo3/.match(@browser.text)
else
raise "x1" unless /foofoo/.match(@browser.text)
raise "y1" unless /foofoo2/.match(@browser.text)
raise "z1" unless /foofoo3/.match(@browser.text)
end
else
raise "Not a valid state"
end
答案 0 :(得分:1)
我认为它在你的真实代码中有所不同,所以你无法做到
if state =~/OH|PA|MN|IL|VA|WI|SC|TN|IN|IA|SC|GA/
if @browser.text.include?("My text")
raise "x" unless /foo/.match(@browser.text)
raise "y" unless /foo2/.match(@browser.text)
raise "z" unless /foo3/.match(@browser.text)
else
raise "x1" unless /foofoo/.match(@browser.text)
raise "y1" unless /foofoo2/.match(@browser.text)
raise "z1" unless /foofoo3/.match(@browser.text)
end
else
raise "Not a valid state"
end
因为现在你可以。所以,如果你真的想要一个答案,为什么你发布了可以轻松减少的假代码呢?
答案 1 :(得分:1)
raise "Not a valid state" unless %w[OH PA MN IL VA WI SC TN IN IA SC GA].include?(state)
if @browser.text.include?("My text")
raise case @browser.text
when /foo/; "x"
when /foo2/; "y"
when /foo3/; "z"
end
else
raise case @browser.text
when /foofoo/; "x1"
when /foofoo2/; "y1"
when /foofoo3/; "z1"
end
end