例如,在我写的这行代码中,print和put会产生不同的结果。

1.upto(1000).each { |i| print i if i % 2 == 0 }

当前回答

Puts调用每个参数的to_s,并向每个字符串添加一个新行,如果它不以new line结束。 Print只是通过调用它们的to_s来输出每个参数。

例如: 写上“一二”: 一个两个

{新行}

输入“一二\n”: 一个两个

{new line} #put不会向结果中添加新行,因为字符串以新行结束

打印“一二”: 一个两个

打印“一二\n”: 一个两个

{新行}

还有另一种输出方式:p

对于每个对象,直接写入obj。Inspect后面跟着一个换行符指向程序的标准输出。

有助于输出调试信息。 P "aa\n\t": aa\n\t

其他回答

如果已经没有参数,则Puts在每个参数的末尾添加新行。

打印不会添加新行。


例如:

put [[1,2,3], [4,5,nil]]将返回:

1
2
3
4
5

而print [[1,2,3], [4,5,nil]] 将返回:

[[1,2,3], [4,5,nil]]

注意为什么puts不输出nil值,而print输出。

Print输出每个参数,后跟$,,到$stdout,后跟$\。它等价于args.join($,) + $\

将$和$\设置为"\n",然后执行与print相同的操作。关键的区别在于,每个参数都是包含看跌期权的新行。

你可以要求“english”来访问那些具有用户友好名称的全局变量。

Puts调用每个参数的to_s,并向每个字符串添加一个新行,如果它不以new line结束。 Print只是通过调用它们的to_s来输出每个参数。

例如: 写上“一二”: 一个两个

{新行}

输入“一二\n”: 一个两个

{new line} #put不会向结果中添加新行,因为字符串以新行结束

打印“一二”: 一个两个

打印“一二\n”: 一个两个

{新行}

还有另一种输出方式:p

对于每个对象,直接写入obj。Inspect后面跟着一个换行符指向程序的标准输出。

有助于输出调试信息。 P "aa\n\t": aa\n\t

一个很大的区别是你是否显示数组。 尤其是NIL的。 例如:

print [nil, 1, 2]

给了

[nil, 1, 2]

but

puts [nil, 1, 2]

给了

1
2

注意,没有出现nil项(只是一个空行),每个项在不同的行上。

如果你想使用puts在字符串中输出数组,你将得到与使用print相同的结果:

puts "#{[0, 1, nil]}":
[0, 1, nil]

但如果不是在一个带引号的字符串中,那么是。唯一的区别是当我们使用看跌期权时,换行。