Vielleicht weiß ich einfach nicht genug über Strukturen und habe sie blind verwendet, aber das Ergebnis unten erscheint mir irrational.Warum verschwindet diese Variable in einer Struktur?
class VarTest < Struct.new(:email)
def perform
puts "Start: #{email}"
if email == "nothing"
email = "bad email"
end
puts "End: #{email}"
end
end
VarTest.new("[email protected]").perform
unerwartete Ausgang:
Start: [email protected]
End:
Wenn ich ändern Sie den Code an:
class VarTest < Struct.new(:email)
def perform
e = email
puts "Start: #{e}"
if e == "nothing"
e = "bad email"
end
puts "End: #{e}"
end
end
VarTest.new("[email protected]").perform
Wir erhalten die erwartete Ausgabe:
Start: [email protected]
End: [email protected]
Kann mir bitte jemand erklären, was hier vor sich geht?
Danke.
Was ist das eigentliche Ziel? Mit anderen Worten, warum verwenden Sie Vererbung anstatt nur 'VarTest = Struct.new (: email)' dann 'VarTest.new ('[email protected]')'? –
Es wird von verzögerter Arbeit als Teil der Enqueue verwendet. Egal, warum verursacht dieses Verhalten dieses Verhalten? – chrishomer