1

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

4

5 回答 5

2

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

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

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

并且print(大致)相当于:

STDOUT.write(str)

因此,在多线程环境中,puts可以创建一些看起来很奇怪的东西,例如:

Message1Messa
ge2
(blank line)

虽然printing 带有串联换行符的字符串会产生:

Message1
Message2

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

于 2013-02-28T00:09:33.760 回答
2

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

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

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

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

帕斯卡有Writeln()Write()

于 2013-02-27T23:58:17.350 回答
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 模块提供的方法,默认情况下包含和搜索,因此通常您不需要使用 Kernel。提出参考它。

Kernel.puts "Hello, world!"

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

于 2013-02-27T23:58:03.397 回答
1

一般而言,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 值,但 puts 语句如果它们包含值则不会打印它们NIL

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


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

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

于 2016-02-22T12:02:16.207 回答
0

可以在print 与 put中看到比较。例如看一下Ruby 中的 Input & output

于 2013-02-27T23:59:20.607 回答