出于好奇,"p " 在Ruby 中的enumerable.each_slice中代表什么?
例如:
(1..3).each_slice(2) {|n| p n}
Run Code Online (Sandbox Code Playgroud)
打印:
[1, 2]
[3]
Run Code Online (Sandbox Code Playgroud)
和
(1..3).each_slice(2) {|n| print n}
Run Code Online (Sandbox Code Playgroud)
打印:
123
Run Code Online (Sandbox Code Playgroud)
而:
(1..3).each_slice(2) {|n| puts n}
Run Code Online (Sandbox Code Playgroud)
打印:
1
2
3
Run Code Online (Sandbox Code Playgroud)
没有神奇或奇怪的行为,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