使用`p`方法转义出现在数组中的字符而不进行插值

时间:2015-06-20 23:34:55

标签: ruby string interpolation string-interpolation

对于下面的overflow,引号围绕一个数组。

overflow = [5,6,7]
p overflow       #=> [5, 6, 7]
p "#{overflow}"  #=> "[5, 6, 7]"

对于下面的stack,插值表达式的结果很奇怪。

stack = 1234.to_s.chars.reverse.each_slice(3).map { |s| s.reverse.join }.reverse
p stack          #=> ["1", "234"]
p "#{stack}"     #=> "[\"1\", \"234\"]"

p方法如何使用stack显示转义字符,而不是overflow?为什么只有插值而不是没有插值打印时才会出现这种情况?

1 个答案:

答案 0 :(得分:3)

product_id是一个整数数组,而overflow是一个字符串数组。 stack中没有任何东西可以逃脱。

可能你打算让overflow成为stack的数组,在这种情况下,在方法链的末尾添加Fxinum

.map(&:to_i)

对于第二个问题,方法stack = 1234.to_s.chars.reverse.each_slice(3).map { |s| s.reverse.join }.reverse.map(&:to_i) 的工作方式。准确地说,行为在String#inspect中定义为p正在使用的方法:

  

返回str的可打印版本,由引号括起,并转义特殊字符。