4

誰か次の表現を理解するのを手伝ってくれませんか?

printf("%3d - %s\n", counter, name)

その行はこのようなものを出力します6 - Install Adobe software

情報を調べてリファレンスを読みましたが、簡単な答えが見つからず、少し混乱しています。良い参考書を紹介していただけるなら、ぜひお願いします。

%3dわかりました、私が理解できることによると%3d、文字またはスペースの数です。それを説明しているリファレンスを教えてください。

%s\nこれが何をするのか理解できませんでした。改行かそれに似たものだと思い\nますが、出力を見ると、そのようには機能していないようです。

counter変数とname変数がコンマで区切られているのはなぜですか?

出力を見ると、 that%3dは一種の に置き換えられ、 に置き換えられcounter%s\nいるようnameです。どのように機能するかはわかりませんが、理解したいと思います。

4

1 に答える 1

12

構文については、任意の printf ドキュメントを参照してください。ただし、ruby​​-doc の sprintf ドキュメントを確認してください。

それらは関数の個別のパラメーターであるため、コンマで区切られていますが、それは多かれ少なかれ構文糖衣です。可変引数を考えてください。

あなたが何を意味するのかわからない%s\n、それは文字列であり、改行です:それが出力されます。

あなたの質問が具体的に「コードがフォーマット文字列と引数のグループを出力に変換する方法」である場合、おそらくソースを検索します。たとえば、小さな埋め込み printfです。一言で言えば、フォーマット文字列がフォーマットオプションのために検索され、関連するパラメータを消費し、適切にフォーマットされた文字列を出力するというものです。これは小さな小さな DSL です。

于 2013-01-24T16:08:23.890 に答える