【问题标题】:What is the differences between print and puts in Ruby with example?示例中的 Ruby 中的 print 和 puts 有什么区别?
【发布时间】:2016-02-22 20:02:16
【问题描述】:

这可能是一个重复的问题,Ruby 中的 print 和 puts 有什么区别?请问可以举个例子吗?

【问题讨论】:

标签: ruby


【解决方案1】:

print 不会在末尾添加换行符。puts 会。

大多数其他语言也有类似的结构。

Java 有 System.out.println()System.out.print()

C# 有Console.WriteLine()Console.Write()

帕斯卡有Writeln()Write()

【讨论】:

    【解决方案2】:

    这很简单。 puts 在打印时自动附加一个换行符。 print 不加修改地打印字符串。

    另一个区别在于底层写操作的数量。 puts (大致)相当于:

    STDOUT.write(str)
    STDOUT.write("\n")
    

    print(大致)相当于:

    STDOUT.write(str)
    

    所以,在多线程环境中,puts 可以创建一些看起来很奇怪的东西,像这样:

    Message1Messa
    ge2
    (blank line)
    

    printing 使用串联换行符的字符串会产生:

    Message1
    Message2
    

    除此之外,它们是相同的。

    【讨论】:

      【解决方案3】:
      irb(main):014:0> class Person
      irb(main):015:1>  attr_accessor :name, :age, :gender
      irb(main):016:1> end
      => nil
      irb(main):017:0> person = Person.new
      => #<Person:0x2bf03e0>
      irb(main):018:0> person.name = "Robert"
      => "Robert"
      irb(main):019:0> person.age = 52
      => 52
      irb(main):020:0> person.gender = "male"
      => "male"
      
      irb(main):021:0> puts person
      #<Person:0x2bf03e0>
      => nil
      irb(main):022:0> print person
      #<Person:0x2bf03e0>=> nil
      irb(main):023:0> print person.name
      Robert=> nil
      irb(main):024:0> puts person.name
      Robert
      => nil
      

      print 和 puts 的区别在于 puts 自动将输出光标移动到下一行(也就是说,它添加一个换行符来开始一个新行,除非字符串已经以换行符结尾),而 print 继续打印文本与上次在同一行。

      puts 不以完成该方法的类或对象的名称为前缀,而 puts 是内核模块提供的一种方法,默认情况下会包含和搜索,因此通常您不需要使用 Kernel.puts 来引用它。

      Kernel.puts "Hello, world!"
      

      puts 只接受一个参数,很少跟其他方法或逻辑,所以括号不是绝对必要的。

      【讨论】:

      • puts 添加换行符以开始新行,除非字符串已经以换行符结尾。
      【解决方案4】:

      puts 和 print 通常有两个主要区别。

      1.换行

      puts 获取每个元素并在换行符中打印(最后没有指定换行符"\n"

      而 print 不会在新行中打印每个元素,除非程序员明确指定它。

      puts "Hello, Welcome to Ruby"
      

      输出:

       Hello, Welcome to Ruby
       Dell-System-XPS:~/Documents/2016RoR/Ruby$
      
      
      
      print "Hello, Welcome to Ruby"    
      

      输出:

       Hello, Welcome to RubyDell-System-XPS:~/Documents/2016RoR/Ruby$
      

      你注意到了吗,输出后没有新行。 但是,当您像下面这样明确提及新行字符时,新行应该可以工作

      print "Hello, Welcome to Ruby \n"
      

      输出:

      Hello, Welcome to Ruby
      Dell-System-XPS:~/Documents/2016RoR/Ruby$
      

      2。空字符或 NIL 值

      print 语句打印空值或 NIL 值,但如果其中包含 NIL 值, puts 语句不会打印它们。

      > print [nil, 33,44,55]
      > [nil, 33, 44, 55] => nil 
      
      
       > puts [nil, 33,44,55]
       >  33
       >  44
       >  55
       => nil 
      

      “你看到了区别,使用puts时没有打印NIL值”

      【讨论】:

        【解决方案5】:

        比较可以在print vs put 中看到。例如看看Input & output in Ruby

        【讨论】:

          猜你喜欢
          • 2011-06-28
          • 2010-10-11
          • 1970-01-01
          • 2011-01-28
          • 2016-03-03
          • 2015-10-28
          • 2010-12-11
          • 1970-01-01
          • 2015-10-06
          相关资源
          最近更新 更多