RubyのString#%というのを知った

Rubyは1.9系列くらいの時にはじめてのRubyを読んだくらいで、それ以来は特に日常的にRubyを書いたりなどはしていなかったのだけど、このブログのためにRakefileを書く必要があってさらにロジックを書く必要ができて。

その書きたかったロジックというもののは文字列をformatしたいというもので、JavaScriptだと'%d'.replace('%d', 100)みたいな感じで頑張るしかないやつ。 RubyなんだからPythonの%みたいな便利なやつあるでしょー、と思って探したらそのままString#%があった。

まあ、詳細については上記に書いてあるのでこれを読めば良いのだけど。 String#%はKernel#sprintfだし、Kernel#sprintfはKernel#formatと同等(どっちがエイリアスなんだろう)と。

'%02d' % 2  # => "02"

という普通の使い方以外にも、ちょっと記法を変えてシンボルがキーになってるハッシュを渡すとまた違った出力ができるみたい。

'%{a} %{b}' % { a: 123, b: 321 }  # => "123 321"

JavaScriptもライブラリに頼らないで出来たら良いんだけどなあ。 ES6でsprintfじゃないけど文字列中の式展開できるようになるんだっけ。 普通に使えるようになるのいつになるんだろう……