ruby(p vs puts vs print)

作者: YongpingZhao | 来源:发表于2016-08-16 13:15 被阅读0次

    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"
    

    相关文章

      网友评论

        本文标题:ruby(p vs puts vs print)

        本文链接:https://www.haomeiwen.com/subject/rlspsttx.html