在红宝石中没有任何外部调用就会调用自己

时间:2016-11-22 16:20:43

标签: ruby

class Hello
  puts self
end

运行此代码会输出Hello。但谁打电话呢?我没有创建任何对象或调用任何类方法。

3 个答案:

答案 0 :(得分:5)

  

在Ruby中,类和模块定义是可执行代码。

Reference

另见this post有关其有用的原因

答案 1 :(得分:1)

在课程self内指的是课程。如果您不在课堂上(例如,在irb中),您将获得main。以下是一些例子

> puts self
main
=> nil

> class String
>  puts self
> end
String
=> nil

答案 2 :(得分:1)

Ruby中的

self基本上类似于Javascript中的this。因为你在Hello类中,所以self = Hello。 Self允许您访问当前对象,并且由于Ruby是面向对象的语言,因此类是对象。在Ruby中,任何类/实例方法都只是通过在类中定义它们而归属于类。因此,类中的关键字self等于该类。就像在Javascript中一样,如果你在任何上下文之外控制日志this,你会得到window,类似地,在Ruby中,put self脱离上下文会给你{{1} }