2017-12-21 3 views

Antwort

3

Wenn eine Methode über Schlüsselwortargumente verfügt, bietet Ruby eine implizite Konvertierung eines Hash-Arguments in Schlüsselwortargumente. Diese Konvertierung wird ausgeführt, indem to_hash für das letzte Argument dieser Methode aufgerufen wird, bevor optionale Argumente zugewiesen werden. Wenn to_hash eine Instanz von Hash zurückgibt, wird der Hash als Schlüsselwortargumente für diese Methode verwendet.

Implementieren Sie niemals implizite Konvertierungsmethoden, wenn Sie nicht genau wissen, was Sie tun! Es ist weit verbreitet, zum Beispiel die #to_hash Methode zu implementieren (vielleicht wegen "schöneren Namen" als #to_h?) und verursacht seltsamste Effekte.

Normalerweise definieren Sie to_hash nicht, wenn Sie es für die explizite Konvertierung in einen Hash benötigen. Definieren Sie stattdessen to_h.

Siehe Here