Verwenden Sie "Kernel. # Throw" und "Kernel. # Catch".
sum = 0
catch(:escape_test) do
for i in 1..3
for j in 1..3
sum = i + j
# sum >Ich möchte sofort entkommen, wenn es 0 erreicht
throw(:escape_test) if sum > 0
end
end
end
p sum
=> 2
Da die Bedingung von "Summe> 0" im Stadium der ersten Addition von "i = 1" erfüllt ist, ist j = 1 ",
An diesem Punkt wird throw (: Escape_test)
aufgerufen, um ** sowohl aus dem j für Anweisung
als auch aus dem i für Anweisung
** zu entkommen.
Verwenden Sie zum Vergleich dieselbe Logik in "break":
sum = 0
for i in 1..3
for j in 1..3
sum = i + j
#Entkomme aus der j-Schleife
break if sum > 0
end
end
p sum
=> 4
Auf diese Weise entgeht break
der innersten Schleife (diesmal der for-Anweisung von j)**, sodass das
i for-Anweisung` umgeht.
Da der Prozess endet, wenn "i = 3, j = 1", "Summe = 4".
sum = 0
c_value = catch(:escape_test) do
for i in 1..3
for j in 1..3
sum = i + j
# sum >Ich möchte sofort entkommen, wenn es 0 erreicht
throw(:escape_test, sum) if sum > 0
end
end
end
p c_value
=> 2
Wenn Sie auf diese Weise einen Wert an das zweite Argument von "throw" übergeben, ist dies der Rückgabewert von "catch".