ruby在命令行中有三种方法来打印信息:
Kernel#p,Kernel#puts,Kernel#print
>class p
> def inspect(); "P#inspect";end
> def to_s(); "P#to_s";end
>end
>q=P.new
print###
print调用对象的to_s方法并把它输出到标准输出上
>print q
P#to_s => nil
print不会添加新的一行
>print 1,2,3
123 => nil
>print 1,"\n",2,"\n",3,"\n"
1
2
3
=> nil
puts###
Kernel#puts可能是ruby开发者最熟悉的打印方法。
puts跟print类似,调用to_s函数,并且添加新的一行输出
> puts q
P#to_s
=>nil
>puts 1,2,3
1
2
3
=>nil
p###
p跟puts类似,添加新的一行,但是它调用的是inspect,而不是to_s
>p q
P#inspect
=>P#inspect
> p 1,2,3
1
2
3
=> [1,2,3]
p函数在调试代码的时候更有效,由于puts调用to_s。因此你并不能准确的知道对象的类型,
如下:
>puts 1
1
=>nil
>puts '1'
1
=> nil
但是p可以更好地返回我们想要查看的内容
> p 1
1
=> 1
> p '1'
"1"
=> "1"