有人可以帮我理解下面的表达吗?
printf("%3d - %s\n", counter, name)
该行打印出类似6 - Install Adobe software
我已查阅信息并阅读参考资料,但我找不到简单的答案而且我有点困惑。如果您可以参考我的好参考,请这样做。
%3d
好的,根据我的理解,%3d
是字符或空格的数量。请指出一个解释它的参考。
%s\n
我无法弄清楚这是做什么的。我猜\n
是换行符或类似的东西,但通过查看输出它似乎不像那样工作。
为什么counter
和name
变量用逗号分隔?
通过查看输出似乎{{1}}被%3d
取代而counter
被%s\n
取代。我不确定它是如何工作的,但我想了解它。
答案 0 :(得分:12)
有关语法,请查看任何printf文档,但请查看sprintf docs on ruby-doc。
它们之间用逗号分隔,因为它们是函数的独立参数,但这或多或少是语法糖。想想varargs。
不确定你对%s\n
的意思是什么,它是一个字符串,然后是换行符:这就是它输出的内容。
如果您的问题具体是“代码如何将格式字符串和一组参数转换为输出”我可能会搜索源代码,例如tiny embedded printf。 Nutshell版本是搜索格式字符串的格式化选项,它们使用相关参数,输出格式正确的字符串。这是一个小小的DSL。