Ruby verfügt über verschiedene Methoden zum Formatieren von Zeichenfolgen gemäß der sogenannten Formatspezifikation.
#Alles"hoge = 1 + 2"Wird bewertet als
sprintf('hoge = %s + %s', 1, 2)
format('hoge = %s + %s', 1, 2)
'hoge = %s + %s' % [1, 2]
Sowohl format
als auch sprintf
sind Kernel-Methoden und Aliase mit unterschiedlichen Namen.
https://docs.ruby-lang.org/ja/latest/method/Kernel/m/format.html
Die dritte "Zeichenfolge #%" hat eine etwas andere Haarfarbe, aber es scheint, dass Sie praktisch dasselbe tun können, indem Sie "Format" aufrufen, indem Sie die Selbstseite als Formatspezifikationszeichenfolge betrachten. https://docs.ruby-lang.org/ja/latest/method/String/i/=25.html
Zum Zeitpunkt dieses Artikels lautet das Standardverhalten von RuboCop "Nur Formatierungsmethoden zulassen". Ich werde korrigiert.
hoge.rb:3:18: C: Style/FormatString: Favor format over String#%.
'hoge = %s + %s' % [1, 2]
^
Darüber hinaus ist der traditionelle Stil wie "% s" wütend, dass es nicht empfohlen wird.
hoge.rb:1:16: C: Style/FormatStringToken: Prefer annotated tokens (like %<foo>s) over unannotated tokens (like %s).
format('hoge = %s + %s', 1, 2)
^^
Es wird empfohlen, die Anmerkung _ \ <Name > _ zur Formatspezifikation hinzuzufügen und den Wert zu übergeben, den Sie in Hash einpassen möchten.
format('hoge = %<x>d + %<y>d', x: 1, y: 2)
Übrigens gibt es auch _% {name} _ in einer ähnlichen Notation, aber es scheint, dass es nicht empfohlen wird. Sie sollten den Bezeichner angeben.
hoge.rb:4:16: C: Style/FormatStringToken: Prefer annotated tokens (like %<foo>s) over template tokens (like %{foo}).
format('hoge = %{x} + %{y}', x: 1, y: 2)
^^^^
RuboCop scheint dazu gedacht zu sein, den Stil mit einem Standardwert von "Format" zu einem zu vereinheitlichen. https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/FormatString
Das ursprüngliche Problem scheint ↓ zu sein, aber es scheint ein grober Prozess wie "Ist es nicht schön, es zu haben?" Oder "Gefällt mir!" Zu sein, anstatt nach einer schwierigen Diskussion entschieden zu werden. Vielleicht ist der Standard mehr als eine Frage der Entscheidung?
Cop idea: Enforce preferred style for format string sequences #3438 https://github.com/rubocop-hq/rubocop/issues/3438
Die Behauptung, dass _% \ <name > _ besser ist als _% {name} _, scheint auf dem Ruby Style Guide zu basieren.
When using named format string tokens, favor %
s over %{name} because it encodes information about the type of the value. https://rubystyle.guide/#named-format-tokens
In Ruby werden sogenannte printf-ähnliche Formatierungsmethoden für Zeichenfolgen in verschiedenen Stilen bereitgestellt.
Wenn Sie Ruby für die moderne, insbesondere Teamentwicklung verwenden, möchten Sie häufig RuboCop einführen. Hier finden Sie eine kurze Zusammenfassung der angegebenen Stile und der Gründe dafür.
Recommended Posts