RubyのString#%というのを知った
Rubyは1.9系列くらいの時にはじめてのRubyを読んだくらいで、それ以来は特に日常的にRubyを書いたりなどはしていなかったのだけど、このブログのためにRakefileを書く必要があってさらにロジックを書く必要ができて。
その書きたかったロジックというもののは文字列をformatしたいというもので、JavaScriptだと'%d'.replace('%d', 100)
みたいな感じで頑張るしかないやつ。
RubyなんだからPythonの%みたいな便利なやつあるでしょー、と思って探したらそのままString#%があった。
- http://docs.ruby-lang.org/ja/2.1.0/method/String/i/=25.html
- http://docs.ruby-lang.org/ja/2.1.0/method/Kernel/m/sprintf.html
まあ、詳細については上記に書いてあるのでこれを読めば良いのだけど。 String#%はKernel#sprintfだし、Kernel#sprintfはKernel#formatと同等(どっちがエイリアスなんだろう)と。
'%02d' % 2 # => "02"
という普通の使い方以外にも、ちょっと記法を変えてシンボルがキーになってるハッシュを渡すとまた違った出力ができるみたい。
'%{a} %{b}' % { a: 123, b: 321 } # => "123 321"
JavaScriptもライブラリに頼らないで出来たら良いんだけどなあ。 ES6でsprintfじゃないけど文字列中の式展開できるようになるんだっけ。 普通に使えるようになるのいつになるんだろう……