出于好奇,'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
答案 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
后跟当前输出记录分隔符写入程序的标准输出。