Ruby中的print和puts有什么区别?

时间:2013-02-27 23:55:21

标签: ruby

可能这是一个重复的问题,在Ruby中print和puts有什么区别?我可以用例子回答吗?

5 个答案:

答案 0 :(得分:2)

print最后没有添加换行符.. puts

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

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

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

Pascal有Writeln()Write()

答案 1 :(得分:2)

这很简单。 puts在打印时会自动附加换行符。 print打印字符串而不进行修改。

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

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

print(大致)相当于:

STDOUT.write(str)

因此,在多线程环境中,puts可以创建一些奇怪的外观,如下所示:

Message1Messa
ge2
(blank line)

虽然print带有连接换行符的字符串会产生:

Message1
Message2

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

答案 2 :(得分:1)

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只接受一个参数,很少跟随其他方法或逻辑,所以括号不是绝对必要的。

答案 3 :(得分:1)

一般来说,看跌期权和印刷品之间存在两个主要差异。

<强> 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值,则put语句不会打印它们。

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


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

&#34;您看到了差异,使用puts&#34时没有打印出NIL值;

答案 4 :(得分:0)

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