首页投稿(暂停使用,暂停投稿)

ruby(p vs puts vs print)

2016-08-16  本文已影响0人  YongpingZhao

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"
上一篇下一篇

猜你喜欢

热点阅读