“p”在枚举器each_slice中的含义是什么?

时间:2011-10-15 17:50:43

标签: ruby

出于好奇,'p 代表Ruby中 enumerable.each_slice 的内容是什么?

例如:

(1..3).each_slice(2) {|n| p n}

打印:

[1, 2]
[3]

(1..3).each_slice(2) {|n| print n}

打印:

123

,同时:

(1..3).each_slice(2) {|n| puts n}

打印:

1
2
3

2 个答案:

答案 0 :(得分:6)

没有神奇或奇怪的行为, p 实际上是指 Kernel.p

each_slice 正在迭代2个元素的切片。所以:

迭代1 - > n = [1,2] 迭代2 - > n = [3]

内核#p 在每次迭代中编写n.inspect,因此它会写出字符串 [1,2] 然后 [3] ,每一个后跟一个新行。

内核#print 写入n后跟 $,的值(字段分隔符,默认为 nil ),所以它写 [1,2] 并立即写 [3]

最后 Kernel#puts 递归写入每个数组后跟一个新行。有关它的更多信息,请访问:http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/227540

答案 1 :(得分:1)

这是对方法Kernel#p的调用。

  

[it]直接将obj.inspect后跟当前输出记录分隔符写入程序的标准输出。