zoukankan      html  css  js  c++  java
  • 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编码

    str = "u5473u9053u4e0du9519"
    puts str #=> 味道不错
    
    str = ["u5473u9053u4e0du9519", "u5473u9053u4e0du9519", ["u5473u9053u4e0du9519"]]
    puts str
    #=> 味道不错
    #=> 味道不错
    #=> 味道不错
    
    str = {a:"u5473u9053u4e0du9519"}
    puts str #=> {:a=>"u5473u9053u4E0Du9519"}
    puts str[:a] #=> 味道不错

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

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

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

    以通俗易懂的方式输出obj。等同于以下代码

    print obj.inspect, "
    ", obj2.inspect, "
    ", ...
    p "u5473u9053u4e0du9519" #=> "u5473u9053u4E0Du9519"
    p不会识别双引号内的转义符,并自动换行

    所以p 和 puts主要是用途的不同,p 是作为 debug 输出,而 puts 作为对象的字符串表示输出
  • 相关阅读:
    mfc crc校验工具
    MFC 配置附加目录
    多线程中如何使用gdb精确定位死锁问题
    符号冲突
    动态库之间单例模式出现多个实例(Linux)
    c++普通函数在头文件定义报重复定义的错误。而class定义不会
    static初始化顺序及延伸
    tcmalloc使用中出现崩溃问题记录
    shell脚本—判断***是否安装
    【1080TI驱动+CUDA10.1+cudnn】安装记录
  • 原文地址:https://www.cnblogs.com/wf0117/p/8889236.html
Copyright © 2011-2022 走看看