我对print()
Python 和 Ruby(以及其他语言)的理解是它是一个字符串(或其他类型)的方法。因为它是如此常用的语法:
打印“嗨”
作品。
那么为什么"hi".print()
在 Python 或"hi".print
Ruby 中不起作用呢?
当您执行类似的操作时"hi".print()
,您是在暗示字符串对象"hi"
有一个方法print
。不是这种情况。相反,print
它是一个将字符串(或其他类型)作为输入的函数。
Ruby 确实有一个方法Object#display
(此处为 doc),它将对象的表示发送到当前输出流,或指定为参数的输出流。
;
(如果我在行尾使用来抑制返回值的打印,我发现很难在 irb 中使用;如果我这样做display
,即使我刷新流,也不会显示 ' 的输出。)
为什么它应该起作用?字符串类很少有 voidprint
方法——而且你永远不需要它们,因为标准的静态print
函数无论如何都可以打印这些字符串。需要注意method(someObject)
的是:不一定与someObject.method()
.
你建议str.print
应该怎么做?
打印到标准输出?标准错误怎么样?还是文件?还是串口?
打印到标准输出确实是一种特殊情况,但它无处不在,有时会被忽视。
那么我们每次创建字符串时都必须指定 str 应该打印到哪里?
至少我们不得不说
"foo".print(sys.stdout)
希望这对你来说也很糟糕。这是责任混淆
print
不是 Python 中字符串的方法(我相信在 Ruby 中)。这是一个语句(在 Python 3 中它是一个全局函数)。为什么?一方面,并非您可以打印的所有内容都是字符串。怎么样print 2
?
如果您更喜欢在 Ruby 中使用方法而不是语句,您可以使用方法 display( "test".display
) 来实现此目的或轻松定义新方法,例如
class String
def print
puts self
end
end
并像这样使用它
"test".print