2016-11-22 74 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