2016-05-03 12 views
1

Kann eine Bedingung aus einer übergeordneten if-Anweisung wieder verwendet werden?Kann ich Bedingungen in verschachtelten if-Anweisungen wiederverwenden?

Beispiel:

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

kann die anfängliche a == b oder a == c in den verschachtelten Anweisungen verwiesen werden, ohne sie manuell erneut eingeben?

+2

Speichern sie in Variablen? – PericlesTheo

+0

In Python gibt es einen finalen Teil, in den Sie Ihre zusätzliche Komponente einfügen könnten. Ich denke nur an das Speichern des Ergebnisses in einer Variablen. In einigen Sprachen können Sie sie in einem if-Statut wie "if (c = a == b ..." zuweisen. – user5055454

+0

Was machen diese Regexe? – sawa

Antwort

0

Vielleicht können Sie eine Flagge verwenden.

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 

oder

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

Lesegeräte : Denken Sie daran, dass die Schönheit im Auge des Betrachters liegt, ich könnte es vielleicht besser mögen [14. Juni] (https://en.wikipedia.org/wiki/Flag_Day_ (United_States)). –

2

Wie im Kommentar in Ruby spitz, der Prozess eine Variable innerhalb des Speicherns gibt den Wert der Variablen, so dass Sie dies tun können:

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 

die Ergebnis

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

Ich mag diese Lösung, außer Natürlich sollten die Namen der Bedingungsvariablen durch aussagekräftige Variablennamen ersetzt werden, obwohl wir keine Möglichkeit haben, zu wissen, wie diese Namen lauten könnten –

+0

Du hast meinen Kommentar gestohlen, zitier wenigstens mich, Teig. – user5055454

2

I sug Gest das folgende.

Verwandte Themen