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

She*_*tin 4 ruby

出于好奇,"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)

snm*_*nmg 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

  • 我建议你按照这个链接,里面有更多有趣的东西. (2认同)