class Hello
puts self
end
运行此代码会输出Hello
。但谁打电话呢?我没有创建任何对象或调用任何类方法。
答案 0 :(得分:5)
答案 1 :(得分:1)
在课程self
内指的是课程。如果您不在课堂上(例如,在irb中),您将获得main
。以下是一些例子
> puts self
main
=> nil
> class String
> puts self
> end
String
=> nil
答案 2 :(得分:1)
self
基本上类似于Javascript中的this
。因为你在Hello类中,所以self = Hello。 Self允许您访问当前对象,并且由于Ruby是面向对象的语言,因此类是对象。在Ruby中,任何类/实例方法都只是通过在类中定义它们而归属于类。因此,类中的关键字self
等于该类。就像在Javascript中一样,如果你在任何上下文之外控制日志this
,你会得到window
,类似地,在Ruby中,put self
脱离上下文会给你{{1} }