2016-05-03 106 views
1

是否有可能從父級if語句重用條件?我可以在嵌套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在嵌套語句,而無需手動重新輸入引用?

+2

將它們存儲到變量? – PericlesTheo

+0

在Python中有一個最後的部分,你可以把你的額外部分。唯一讓我想到的是將結果存儲在一個變量中。有些語言允許你在if語句中指定它們,比如「if(c = a == b ...」。 – user5055454

+0

這些正則表達式在做什麼? – sawa

回答

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 
+1

讀者:請記住,如果是[6月14日](https://en.wikipedia.org/wiki/Flag_Day_(United_States)),我可能會更喜歡這一點。 –

2

如在紅寶石的評論指出,存儲內部變量返回變量的值,所以你可以這樣做:

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 
+0

我喜歡這個解決方案,除了當然,條件變量名稱應該用有意義的變量名稱替換,儘管我們無法知道這些名稱可能是什麼。 –

+0

您偷走了我的評論!至少引用了我,麪糰。 – user5055454

2

我建議指出以下內容。

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

def common_code 
    ... 
end