2016-11-22 76 views
0
class Hello 
    puts self 
end 

,无需任何外部调用称为运行此代码输出Hello。但是这个电话是谁?我没有创建任何对象或调用任何类方法。把自己得到的红宝石

回答

1

类内self指的是类。如果你不在班上(例如irb),你会得到main。下面是一些例子

> puts self 
main 
=> nil 

 

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

在Ruby中self基本上就像在Javascript this。由于你在Hello类中,所以self = Hello。 Self让你可以访问当前对象,由于Ruby是一种面向对象的语言,类是对象。在Ruby中,任何类/实例方法都只是通过在类中定义它们而归入类。因此,类中的关键字self等于该类。就像在Javascript中,如果控制台登录this以外的任何情况下,你会得到window,同样,在Ruby中,putsing self断章取义会给你main

5

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

Reference

this post参见为什么如果你是从C++背景,这是非常有用

+0

非常混乱:) – InQusitive