ruby puts, print, p方法比较

Posted w3cschool编程狮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby puts, print, p方法比较相关的知识,希望对你有一定的参考价值。

ruby puts, print, p方法比较

1.puts([obj[, obj2[, ....]]] )

依次将obj和换行符输出到$>。若没有参数的话则只会输出换行符。

若参数是数组,则依次输出数组元素和换行符。若将既非数组又非字符串的对象传递给参数时,将尝试使用使用to_s方法将其化为字符串。若是nil则输出字符串"nil"。

若参数是以换行符结尾时,puts将不再输出换行符。

注意:当obj为string或者array时,puts会对obj里面的转义符号进行转义;如果不是,比如Hash类型,就直接先调用to_s方法,将其转化为字符串,这里是不会对转义进行处理的,所以当我们通过 key-value 对hash进行访问时,如果value为 string或array 中包含转义字符还是会转义的;在做接口测试时,解析json串中,有时中文显示成unicode编码。

ruby puts, print, p方法比较

str = "\u5473\u9053\u4e0d\u9519"
puts str #=> 味道不错

str = ["\u5473\u9053\u4e0d\u9519", "\u5473\u9053\u4e0d\u9519",["\u5473\u9053\u4e0d\u9519"]] puts str
#=> 味道不错
#=> 味道不错
#=> 味道不错

str = {a:"\u5473\u9053\u4e0d\u9519"} puts str #=> {:a=>"\u5473\u9053\u4E0D\u9519"}
puts str[:a] #=> 味道不错

ruby puts, print, p方法比较

 

2.print([arg1[, arg2, ...]])

print 基本与puts相同,但输出内容后,不会自动在结尾加上换行符

 

3.p(obj, [obj2, ...])

以通俗易懂的方式输出obj。

等同于以下代码


print obj.inspect, "\n", obj2.inspect, "\n", ...
p "\u5473\u9053\u4e0d\u9519" #=> "\u5473\u9053\u4E0D\u9519"


p不会识别双引号内的转义符,并自动换行。

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

文章链接:https://www.cnblogs.com/wf0117/p/8889236.html

一指禅 戳戳戳!


以上是关于ruby puts, print, p方法比较的主要内容,如果未能解决你的问题,请参考以下文章

从 Ruby 中的模块/mixins 继承类方法

Ruby Print Inject Do 语法

第35篇 进程之间的通信 Queue Pipe 进程池Pool,p.apply()方法,p.apply_async()方法

Ruby基础语法

Ruby学习笔记

Ruby on rails - 更新 ajax 的 PUT 方法