Ruby 2.7 wurde gerade veröffentlicht und enthält diese neuen Warnungen für "Trennung von Positions- und Schlüsselwortargumenten" (siehe deren Veröffentlichungsbeitrag ). Ich habe damit herumgespielt und festgestellt, dass es eine weitere Warnung gibt, die ich nicht verstehe.
Beispiel:
def multiply(x:, y:)
x * y
end
args = { x: 2, y: 3 }
multiply(args)
# ./warning.rb:7: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
# ./warning.rb:1: warning: The called method `multiply' is defined here
Ich denke, die erste Warnung bezüglich der Abwertung ist klar, aber die zweite Warnung The called method `multiply' is defined here
ist für mich verwirrend.
Was bedeutet die zweite Warnung? Bezieht es sich auf die erste Warnung?
Beide Warnungen verschwinden beim Hinzufügen **
zum Aufruf ( multiply(**args)
).
Antworten:
Es gibt eine einzelne Warnung mit einem in zwei Zeilen aufgeteilten Text. Es heißt wörtlich:
args
Sollte konvertiert werden zu**args
, hier ist der Aufruf, der diese Warnung erzeugt hat, hier ist seine Definition für Ihre Bequemlichkeit .quelle