%Ruby中的符号

%Ruby中的符号,ruby,syntax,Ruby,Syntax,我读过,但找不到关于以下内容的解释 示例1:以下代码带有%输出i。显然,%将i更改为字符串。但我不确定%到底在做什么 irb(main):200:0> [[1,2,3],[4,5,6]].each{ |row| p row.map{ |i| % i } } ["i", "i", "i"] ["i", "i", "i"] => [[1, 2, 3], [4, 5, 6]] irb(main):201:0> [[1,2,3],[4,5,6]].each{ |row| p row.

我读过,但找不到关于以下内容的解释

示例1:以下代码带有
%
输出
i
。显然,
%
i
更改为字符串。但我不确定
%
到底在做什么

irb(main):200:0> [[1,2,3],[4,5,6]].each{ |row| p row.map{ |i|  % i } }
["i", "i", "i"]
["i", "i", "i"]
=> [[1, 2, 3], [4, 5, 6]]
irb(main):201:0> [[1,2,3],[4,5,6]].each{ |row| p row.map{ |i|  i } }
[1, 2, 3]
[4, 5, 6]
=> [[1, 2, 3], [4, 5, 6]]
例2:似乎是在一个数字前面加了两个空格。同样,我不确定
%2d
在做什么

irb(main):194:0> [[1,2,3],[4,5,6],[7,8,9]].each{ |row| p row.map{|i| "%2d" % i } }
[" 1", " 2", " 3"]
[" 4", " 5", " 6"]
[" 7", " 8", " 9"]
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
我在哪里可以找到这些文件?

这是文件-

有两种不同类型的%strings%q(…)的行为类似于单引号字符串(无插值或字符转义),而%q的行为类似于双引号字符串

在第一个示例中,
p row.map{i |%i}
根据上面的文档
%i
创建一个字符串
“i”

示例:-

[1, 2, 3].map { |i| % i } # => ["i", "i", "i"]
% i  # => "i"
记住医生说的-

只要百分比字符串不是最后一个,相邻的单引号、双引号和百分比字符串的任何组合都将连接起来

任何单个非字母数字字符都可以用作分隔符,%[包括这些]、%?或这些?、

现在在您的情况下,它是
%i
。在我刚才提到的链接中有
%[…]
%?…
等等。。这就是为什么
%i
给出
“i”
。(我用
表示有空格)

阅读

返回将format_字符串应用于任何其他参数所产生的字符串。在格式字符串中,格式序列以外的任何字符都会复制到结果中

格式序列的语法如下所示

格式序列由百分号组成,后跟可选标志、宽度和精度指示器,然后以字段类型字符终止。字段类型控制如何解释相应的sprintf参数,而标志会修改该解释

你的最后一个问题实际上指向了一种方法


如果IRB让你变傻了,就像在试图理解
%i
时让我变傻了一样,别担心,看看-。马修·克温(Matthew Kerwin)的回答很好。

在irb中,当我键入%I时,我不会返回任何内容。@shin请看链接,我已经在答案中给出了。:-)我忘了一个空格。谢谢
%[flags][width][.precision]type