2015-08-16 61 views
4

我是Ruby的新手,很困惑::運營商。爲什麼下面的代碼輸出2,3,4,5,1而不只是輸出?謝謝!::運算符如何在Ruby中工作?

class C 
    a = 5 
    module M 
    a = 4 
    module N 
     a = 3 
     class D 
     a = 2 
     def show_a 
      a = 1 
      puts a 
     end 
     puts a 
     end 
     puts a 
    end 
    puts a 
    end 
    puts a 
end 



d = C::M::N::D.new 
d.show_a 
+5

因爲你調用'puts' 5次? – cremno

回答

5

如果你刪除最後一行,你會看到你會得到5, 4, 3, 2。原因是類和模塊的主體只是普通的代碼(與其他一些語言不同)。因此,這些打印語句將在類/模塊得到解析時執行。

至於::的工作原理 - 它只是讓你移動範圍。 ::A將引用主範圍中的A。只要A將在當前範圍內參考AA::B將參考B,即在A之內,即在當前範圍內。

相關問題