2010-02-27 87 views
1

我是否爲這種賦值創建了額外的方法? @@variable = @global_variable爲什麼?我想讓一些變量保持值和定義可以通過我的腳本訪問,並且只有一個定義的地方。我可以使用全局變量初始化一個類變量嗎? (ruby)

@global_variable = 'test' 

class Test 

@@variable = @global_variable 

    def self.display 
    puts @@variable 
    end 
end 

Test.display #gives nil 

回答

8

在Ruby中,全局變量帶有前綴$,而不是一個@

$global = 123 

class Foo 
    @@var = $global 
    def self.display 
     puts @@var 
    end 
end 

Foo.display 

正確輸出123

你所做的是分配一個實例變量,模塊或Object類(不知道哪個);該實例變量不在您定義的類的範圍內。

+2

實際上,OP會在「主要對象」上設置實例變量。 – sepp2k 2010-02-27 23:58:57

+0

@Mark Rushakoff:你說得對。謝謝。即使是'@@ variable = @@ global_variable'也能工作。 – Radek 2010-02-28 00:00:58