我有一个返回nil
或非nil
值的函数,我在以下if
- else
子句中使用它:
if condition_that_doesnt_involve_my_func
# do stuff
elsif my_func(cur_line)
headers_found = my_func(cur_line)
end
我觉得上面的块有点浪费,因为它调用了两次函数,它可以只保存一次结果,然后如果分支求值为非nil
则在下面的子句中使用它。
有没有办法重写这个,所以我只调用一次函数?
答案 0 :(得分:2)
你可以写:
elsif headers_found = my_func(cur_line)
我不建议那样,而Rubocop也不喜欢这样。
答案 1 :(得分:2)
试试这个:
if condition_that_doesnt_involve_my_func
# do stuff
elsif answer = my_func(cur_line)
headers_found = answer
end
不确定rubocop是否会在此吠叫。我不习惯。
答案 2 :(得分:0)
如果您担心它将返回值分配给headers_found
。它最终会变为假(headers_found.present? #false
)或包含标题。
if condition_that_doesnt_involve_my_func
# do stuff
else
headers_found = my_func(cur_line)
end