0

在完成 Ruby Codecademy 练习时,我遇到了 puts() 和 print()。不同之处在于一个添加换行符而另一个不添加。这是经过深思熟虑的设计决策,还是只是不断发展的代码?对此有两个(名称完全不同的)函数对我来说似乎很奇怪。为什么不增加一个论点或其他解决方案呢?

编辑:澄清一下,我最感兴趣的是为什么选择这些特定名称,因为它们似乎与功能差异无关。

4

3 回答 3

3

我一直认为它来自 C,在那里你可以puts打印带有新行的字符串,以及printf按类型(但没有新行)打印带有插值的字符串。

同样,在 Ruby 中你有putswhich 做同样的事情,并print使用 #{} 进行插值。与 C 的区别显然是插值直接内置在字符串中,并且可以在 print 语句中或之外使用。

于 2012-11-29T19:21:47.377 回答
1

我认为这是因为 Ruby 是面向 unix 的,它继承了一些奇怪的东西。特别是,由于终端是面向行的,即用户输入一行,然后程序以行响应,用户输入一行,......,它是如此频繁以至于你想在打印出一些东西时结束这一行,因此有puts。但是,在某些情况下(不那么频繁)您不想结束一行,这就是为什么存在print.

虽然我不觉得同时拥有printputs不自然,但我确实觉得puts被认为比 更基本的不自然print,并且在 Ruby 的介绍性文档中,几乎总是puts在开头介绍,但print几乎没有解释。既然print是比较初级的操作,而且puts是建立在它之上的,而且速度较慢,所以教科书应该print先介绍,然后再说那putsprint "...#$/".

于 2012-11-29T18:15:34.310 回答
1

我认为这只是为了方便,因为用换行符打印一行是日常开发中相当常见的任务。

例如,在 Perl 语言中,他们在 1997 年用 Perl 5.10 显式引入了 say() 函数(相当于 ruby​​ 的 puts),而 Perl 已经存在了很长时间。:-)

于 2012-11-29T17:01:47.230 回答