(补充1)Ruby中的pputsprint对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(补充1)Ruby中的pputsprint对比相关的知识,希望对你有一定的参考价值。

p puts Ruby 中特别常用的方法,很多童鞋可能认为它们是差不多的,使用的时候也不加注意,但是仔细考究起来,它们是有明显差别的。

先举一个例子:

class Foo
  def
inspect
    "foo from inspect"
  end


  def
to_s
    "foo from to_s"
  end
end
foo = Foo.new
p foo
puts foo
p "p: <#{foo}>"
puts "puts: <#{foo}>"

这段代码的输出是:

技术分享

p obj 相当于 puts obj.inspect

puts obj 相当于 puts obj.to_s

使用是明显区别的,p 是使用 obj inspect 方法,而 puts to_s 方法。

为什么会这样呢?这个我想可以从 to_s inspect 的区别说起,to_s 是对象的字符串表示, puts 和双引号字符使用的方法。inspect 是对象状态的表示,通用用于 debug 中。 Object 中的定义了 to_s inspect 方法,默认都是返回对象的类名和地址。

所以p puts主要是用途的不同,p 是作为 debug 输出,而 puts 作为对象的字符串表示输出。

另外值得一提的是,在 irb console 中,命令行中表达式求值,使用的是 p 对象的 inspect 方法。另外,通常 debug 输出命令,也是使用对象的 inspect 方法。

再举一个例子:

array =[2,4,6,8,10]
puts array
p array
print array
技术分享

小结:

比较项目

 puts

 print

 换行符

末尾添加换行符

 末尾不加换行符

 末尾添加换行符

 非字符串对象的输出

 调用该对象的to_s方法

 调用该对象的to_s方法

 通过inspect方法将对象转换成字符串

 

以上是关于(补充1)Ruby中的pputsprint对比的主要内容,如果未能解决你的问题,请参考以下文章

学哪个?Python 和 Ruby 优缺点对比!

Python 和 Ruby 的对比

猿创征文 |游戏开发实战——2D项目1 - Ruby‘s Adventure控制游戏角色移动(1-2)

ruby [Jekyll补充数据模块]将jekyll post的补充数据文件复制到帖子的内置html附近的位置#data #jekyll

Ruby 服务器对比

评测:音源环节-银彩RUBY HILL和RUBY MOUNTAIN