Просто потому, что он не был упомянут, метод Kernel#sprintf
(или его псевдоним Kernel#format
в Powerpack Library ) обычно предпочтительнее метода String#%
, как упоминалось в Ruby Community Style Guide .
Конечно, это очень спорно, но, чтобы обеспечить понимание:
Синтаксис ответа @ quackingduck будет
# considered bad
'%010d' % rand(10**10)
# considered good
sprintf('%010d', rand(10**10))
Природа этого предпочтения в первую очередь обусловлена загадочной природой %
. Сам по себе он не очень семантический, и без какого-либо дополнительного контекста его можно спутать с оператором %
по модулю.
Примеры из Руководства по стилю :
# bad
'%d %d' % [20, 10]
# => '20 10'
# good
sprintf('%d %d', 20, 10)
# => '20 10'
# good
sprintf('%{first} %{second}', first: 20, second: 10)
# => '20 10'
format('%d %d', 20, 10)
# => '20 10'
# good
format('%{first} %{second}', first: 20, second: 10)
# => '20 10'
Если судить по String#%
, мне лично очень нравится использовать операторные синтаксисы вместо команд, так же, как вы делаете your_array << 'foo'
поверх your_array.push('123')
.
Это просто иллюстрирует тенденцию в сообществе, что «лучшее» зависит от вас.
Подробнее в этом блоге .