gpt4 book ai didi

ruby - 在 Ruby 中,应用 puts 方法的对象是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:48 27 4
gpt4 key购买 nike

在 ruby​​ 中,您使用点来调用方法,或者换句话说,将方法发送到处理的对象。

"100".to_i

我们正在向对象“100”发送消息 to_i

当我们这样做时:

puts "hello"

方法put,应用于哪个对象?

我是这样想的:

self.puts "hello"

self 是 main 的地方,比如你现在所在的环境,例如 irb 控制台。

但是它会抛出一个错误。

Traceback (most recent call last):
2: from /Users/albert/.rbenv/versions/2.5.0/bin/irb:11:in `<main>'
1: from (irb):17
NoMethodError (private method `puts' called for main:Object)

为什么错了? puts方法在哪里应用?

更新:Ruby 2.7 允许使用 self 调用私有(private)方法。在 1 请求并讨论了此功能和 2 .

最佳答案

putsKernel 的模块方法. Kernel 包含在 Object 中,因此几乎每个类都可以使用它。 puts "foo"Kernel.puts "foo" 是等价的。区别在于 Kernel.puts 是显式的,而 puts 可以调用本地定义的 puts 方法。

def puts(str)
p "my puts: #{str}"
end

puts "foo"; # "my puts: foo"
Kernel.puts "foo" # foo

在幕后,Kernel.puts 调用 $stdout.puts . $stdoutIO 的预定义全局实例.

关于ruby - 在 Ruby 中,应用 puts 方法的对象是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54137139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com