我刚刚编写了这个ruby代码,它非常简单,我只想交换依赖于变量的操作顺序。我觉得我写的东西比它需要的更冗长,有人能想到更简洁的写作方式吗?
if opts["--appears"]
if regex = opts["--matches"]
test = !response.text.match(regex)
else
test = !response.empty?
end
else
if regex = opts["--matches"]
test = response.text.match(regex)
else
test = response.empty?
end
end
所以我认为可以优化的是外部if块,所有更改都将test
转换为!test
。为似乎是一个简单的问题道歉,但我无法想到如何优化它。
如果您认为这个问题不是一个糟糕的论坛,或者您认为应该将其转移到代码审核中,请告诉我们。我认为这可能是最好的地方,但不确定。
由于
答案 0 :(得分:2)
一个简单的改进是首先运行你的测试,然后如果选择[" - 出现"]则返回负数:
test = if regex = opts["--matches"]
response.text.match(regex)
else
response.empty?
end
opts["--appears"] ? !test : test
答案 1 :(得分:0)
我相信这会简化代码并提高可读性:
regex = opts["--matches"]
test =
if opts["--appears"]
regex ? !response.text.match(regex) : !response.empty?
else
regex ? response.text.match(regex) : response.empty?
end
或者,如果您愿意:
regex = opts["--matches"]
test =
case opts["--appears"]
when true
regex ? !response.text.match(regex) : !response.empty?
when false
regex ? response.text.match(regex) : response.empty?
end