Ruby的printf参数是什么意思?

4

请问有人能帮我理解以下表达式吗?

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

这行代码打印出来的内容大概是这样的:6 - 安装Adobe软件

我查阅了相关信息和参考资料,但是没有找到简单的答案,有没有好的参考资料可以推荐一下呢?

%3d 根据我所理解的,%3d 是字符或空格的数量。请指点我一个可以解释它的参考资料。

%s\n 我无法弄清楚这个代码的作用。我猜测 \n 是换行符或类似的东西,但是从输出结果看起来并不像是这样的。

为什么变量 countername 要用逗号分隔开呢?

从输出结果看起来,%3dcounter 取代了,%s\nname 取代了。我不确定它是如何工作的,但我想要理解它。


不,我来自于HTML/CSS PHP背景。现在已经做了一段时间的RoR,并且正在努力更深入地学习Ruby。 - leonel
18
正如你所看到的,不是所有人都来自C语言背景。学习Ruby并不要求具备C语言背景,问题中也没有"C"标签。因此,你的评论无关紧要。 - inger
1个回答

12

对于语法,请参考任何printf文档,但请查看ruby-doc上的sprintf文档

它们由逗号分隔,因为它们是函数的独立参数,但这更多地是语法糖。想想varargs。

不确定你在说什么%s\n,它是一个字符串,然后是一个换行符:这就是它的输出。

如果你的问题特别是“代码如何将格式化字符串和一组参数转换为输出”,我可能会搜索源代码,例如小型嵌入式printf。简而言之,格式化字符串中搜索格式化选项,它们消耗其关联的参数,输出适当格式化的字符串。这是一个微小的DSL。


1
+1 而且ruby-doc.org版本的示例格式正确 - 你可能想链接到那里。 - Xavier Holt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接