我可以在嵌套的if语句中重用条件吗?

时间:2016-05-03 15:55:06

标签: ruby if-statement

是否可以从父if语句重用条件?

示例:

if a == b || a == c
    if a == b
        #do thing
    elsif a == c
        #do the other thing
    end
    #in addition to this thing
end

可以在嵌套语句中引用初始a == ba == c而无需手动重新输入它们吗?

3 个答案:

答案 0 :(得分:2)

正如ruby中的注释所指出的,内部存储变量的过程会返回变量的值,因此您可以这样做:

a = 3
b = 4
c = 3

if cond1 = a == b || cond2 =  a == c then
    if cond1 then
        puts "a==b"
    elsif cond2
        puts "a==c"
    end
    puts "do this"

end

结果

irb(main):082:0> a==b
do this
=> true
i

答案 1 :(得分:2)

我建议如下。

case a
when b
  ...
  common_code
when c
  ...
  common_code
end

def common_code
  ...
end

答案 2 :(得分:0)

也许你可以使用旗帜。

if a == b
  flag = true
  # do thing
elsif a == c
  flag = true
  # do the other thing
else
  flag = false
end
if flag
  # in addition to this thing
end

flag =
case a
when b
  # do thing
  true
when c
  # do the other thing
  true
else
  false
end
if flag
  # in addition to this thing
end