Ruby dispose de plusieurs méthodes pour formater les chaînes selon la soi-disant spécification de format.
#Tout"hoge = 1 + 2"Est évalué comme
sprintf('hoge = %s + %s', 1, 2)
format('hoge = %s + %s', 1, 2)
'hoge = %s + %s' % [1, 2]
«Format» et «sprintf» sont des méthodes du noyau et sont des alias avec des noms différents. https://docs.ruby-lang.org/ja/latest/method/Kernel/m/format.html
La troisième String #%
a une couleur de cheveux légèrement différente, mais il semble que vous pouvez faire pratiquement la même chose simplement en appelant format
en considérant le côté self comme la chaîne de caractères de spécification de format.
https://docs.ruby-lang.org/ja/latest/method/String/i/=25.html
Au moment de cet article, le comportement par défaut de RuboCop est «Autoriser uniquement les méthodes de formatage». Je serai corrigé.
hoge.rb:3:18: C: Style/FormatString: Favor format over String#%.
'hoge = %s + %s' % [1, 2]
^
De plus, le style traditionnel comme % s
est en colère parce qu'il n'est pas recommandé.
hoge.rb:1:16: C: Style/FormatStringToken: Prefer annotated tokens (like %<foo>s) over unannotated tokens (like %s).
format('hoge = %s + %s', 1, 2)
^^
Il semble qu'il soit recommandé d'ajouter l'annotation _ \ <nom > _ à la spécification de format et de transmettre la valeur que vous souhaitez insérer dans Hash.
format('hoge = %<x>d + %<y>d', x: 1, y: 2)
Au fait, il y a aussi _% {name} _ dans une notation similaire, mais il semble que ce ne soit pas recommandé. Vous devez spécifier le spécificateur.
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 semble être destiné à unifier le style en un seul, avec une valeur par défaut de format
.
https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/FormatString
Le problème original semble être ↓, mais cela semble être un processus difficile tel que "N'est-ce pas agréable de l'avoir?" Ou "J'aime!" Plutôt que d'être décidé après une discussion difficile. Peut-être que la valeur par défaut est plus qu'une question de décision?
Cop idea: Enforce preferred style for format string sequences #3438 https://github.com/rubocop-hq/rubocop/issues/3438
L'affirmation selon laquelle _% \ <nom > _ vaut mieux que _% {nom} _ semble être basée sur le Guide de style Ruby.
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
Dans Ruby, les méthodes de formatage de chaîne de type printf sont fournies dans plusieurs styles.
Si vous utilisez Ruby à l'époque moderne, en particulier dans le développement d'équipe, vous voudrez souvent introduire RuboCop. Voici un bref résumé des styles spécifiés et de leur justification.
Recommended Posts