Ruby => 變數(一)

ck100pro
ck100pro
Published in
3 min readFeb 2, 2020

(區域變數)

在ruby裡有一個變數叫做區域變數,看以下例子,先定義一個Father的類別,而在裡面建立一個叫做initialize的方法,再來就是把Father這個類別實體化f1。

而在實體化的同時也會去執行initialize這個方法,在initialize這個方法裡面會建立一個叫做var的區域變數並設值為0,同時把var用p方法給顯示出來。

這裡我們來看一下區域變數的作用範圍,看下面的例子。

我們把initialize裡面的(p var)給移到action這個方法裡面,接下來把Father類別實體化,再來就是呼叫action這個方法,看會不會把var這個區域變數顯示出來

從以下結果來看會顯示錯誤,其內容會說找不到var這個區域變數或這個方法。

從這裡可以知道,區域變數的作用範圍就只有在當前定義的實體方法裡面,只要脫離這個方法這個區域變數就會無法作用,

(實體變數)

在來說實體變數,實體變數的定義方法和區域變數不一樣,定義實體變數要在前面加上一個@才可以,可以看下面的例子。

我們把上面的例子改一下,可以看到我們把var區域變數前面加了一個@就變成實體變數了。

實體變數和區域變數不同的地方在實體變數可以被同一個類別的實體方法給呼叫,如以下例子。

我們在Father這個類別裡面增加了2個方法,一個是var_add用來累加@var這個實體變數,而另一個方法action是用來把實體變數顯示出來。

從輸出結果來看這次測試,var_add這個方法確實有把@var進行累加,而action這個方法也能把@var這個實體變數呼叫並顯示出來。

所以實體變數確實可以被同一個類別上的其餘實體方法給使用。

下一篇會講類別變數和類別實體變數的差別。

--

--