Die Entwicklungsversion von Ruby 3.0 verfügt über eine Funktion, die eine geteilte Zuweisung durch richtige Zuweisung ermöglicht.

Nachdruck aus Blog-Artikel.

Es ist eingetreten. Ursprünglich enthielt Ruby 2.7 experimentell eine Funktion, die die geteilte Zuweisung mithilfe einer Zeile im Mustervergleich ermöglicht.

# Ruby 2.Code, der mit 7 funktioniert
p RUBY_DESCRIPTION
# => "ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]"

data = { name: "homu", age: 14 }

#Ich konnte eine geteilte Zuweisung mit einer Zeile durchführen
data in { name:, age: }
p name  # => "homu"
p age   # => 14

Als der Mustervergleich in Ruby 3.0 offiziell eingeführt wurde, sollte eine Zeile einmal gelöscht werden.

Ich fand es schade, dass die geteilte Zuweisung gelöscht wurde, weil ich es wollte, weil es eine sehr praktische Funktion ist, aber anstatt eine Zeile zu löschen, wurde die geteilte Zuweisung durch die richtige Zuweisung in Ruby 3.0 implementiert. Dies ermöglicht es, eine geteilte Zuweisung mit der richtigen Zuweisung durchzuführen, wie dies mit einer Zeile in getan wurde.

p RUBY_DESCRIPTION
# => "ruby 3.0.0dev (2020-10-26T09:00:24Z master 52c630da00) [x86_64-linux]"

data = { name: "homu", age: 14 }
data => { name:, age: }
p name  # => "homu"
p age   # => 14

Übrigens wird es als geteilte Zuweisung bezeichnet, aber da es sich um eine variable Erfassungsfunktion für den Mustervergleich handelt, kann es auch wie folgt verwendet werden.

data = { name: "homu", age: 14 }

#Es kann nur ein Teil zugewiesen werden
data => { age: }
p age   # => 14

#Kann auch mit Struct erfasst werden
data = Struct.new(:name, :age).new("mami", 15)
data => { name: }
p name  # => "mami"

#Raise NoMatchingPatternError tritt auf, wenn keine Übereinstimmung vorliegt
data => { name: Integer }

Ursprünglich wollte ich eine Zeile als bedingten Ausdruck für "if" verwenden, aber am Ende wurde sie für diesen Zweck unbrauchbar, und im Gegenteil, sie wurde zu einer Funktion mit einer etwas anderen Bedeutung, die als geteilte Zuweisung bezeichnet wird. Durch die Implementierung mit der richtigen Zuordnung hat es eine andere Bedeutung und wird zu einer Funktion, und ich persönlich denke, dass es sich erheblich verbessert hat. Im Gegenteil, ich möchte, dass die Funktion "wahr / falsch" verwenden kann, damit sie in bedingten Ausdrücken in einer Zeile verwendet werden kann. Vorerst können Sie jetzt die richtige Substitution verwenden! !! Wird die linke Zuordnung übrigens in Richtung der geteilten Zuweisung gehen?

Recommended Posts

Die Entwicklungsversion von Ruby 3.0 verfügt über eine Funktion, die eine geteilte Zuweisung durch richtige Zuweisung ermöglicht.
Ruby 2.7.2 wurde veröffentlicht und veraltete Warnungen werden standardmäßig nicht mehr ausgegeben
Ich habe ein Rätsel ausprobiert, das nur von den unteren 10% der schlechten Ingenieure gelöst werden kann
Auf die Version von Ruby, die standardmäßig auf dem Mac installiert war, wurde verwiesen, nicht von rbenv