Verwenden Sie das benannte Format mit Rubys Formatmethode

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

Was ist der empfohlene Schreibstil?

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)
               ^^

Wie man doch schreibt

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)
               ^^^^

Warum dieser Stil empfohlen wird

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

Zusammenfassung

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

Verwenden Sie das benannte Format mit Rubys Formatmethode
Verwenden Sie FacesContext als Mock mit PowerMockito
Geben Sie ein Suffix für Methode 2 heraus
Berücksichtigung des in SpringToolSuite (STS) verwendeten Eigenschaftseditors
Verwenden Sie java1.7 (zulu7) in einem bestimmten Verzeichnis mit jenv
Warum mit Singleton anstelle einer statischen Methode implementieren?
Verwenden Sie ProGuard mit Gradle
Verwenden Sie Puphpeteer mit Docker
Verwenden Sie XVim2 mit Xcode 12.0.1
Verwenden von CentOS mit LXD
Verwenden Sie Webmock mit Rspec
Automatisieren Sie das Format mit dem Maven-Formatierer
Formatieren Sie JSON mit org.json
Verwenden Sie WebJars mit Gradle
Verwenden Sie jlink mit gradle