Rubyの魔法のような単なるフォーマット文字列

fixtureを生成したくなったため、良い方法をググっていたら、下のエントリを発見しました。

このエントリーを最後まで見たら、最後に得体の知れないものが……%1$d……'common_fixture'、あなたは引数を取る変数ですか!?

良く見るとString#%っぽいので、るりまのsprintf フォーマット (Ruby 2.4.0)を参照しました。

%nth$指示子で、引数のn-th番目のフォーマットを行なう……!!

他にも%<name>%{name}!何でもできますね!

……とはいえ、文字列プログラミングで頑張るのはMakefileプログラミングと同じようなものだと思うので、頑張り過ぎないようにしたいと思います。

Kernel.#sprintfはいいのですが、文字列中の"%“とString#%は、C言語のポインタ演算子”*“*1と同じように、「確かに同じ機能に対して同じ文字を使うのはわかるけど機能が違うよねー」と言いたくなります。Rubyっぽさではあると思いますが……。

*1:ポインタ変数を定義するときの*とポインタから実体にアクセスするときの*