Ruby有5個可變範圍:差異紅寶石作用域
- 本地變量:這些是正常的變量,例如
x = 25
,y = gaurish
其中x
和y
是局部變量。 - 實例變量:這些用實際變量名稱的
@
符號表示。主要與類一起使用,以便類的每個實例/對象具有不同的/單獨的值。例。@employee.name = 'Alex'
- 類別變量:用變量名前面的
@@
符號表示。類變量,我認爲具有相同的價值accos所有實例/對象。 - 全局變量:他們開始與
$
符號和可訪問到處。示例$LOAD_PATH
- 常量:必須以大寫字母開始,但以大寫字母
ALL_CAPS
寫。雖然,它是一個常量,但它的價值不是恆定的,可以改變(雖然紅寶石會發出警告)。所以從某種意義上講,這也是一個變量。
正如你可能會注意到的,以上所有的變量都存儲某種類型的值,並且它們的值可以被改變。但是,每個範圍都有一點不同。有5種不同類型的可變範圍會讓我感到困惑。主要是,我很難決定在什麼情況下,我應該在我的代碼中使用特定範圍。所以我在腦海裏有一些問題。請回答:
- 我注意到局部變量和類變量對所有對象/實例保持不變,與實例變量不同。那麼局部變量和類變量有什麼區別?
- 局部變量可以用來代替類變量嗎?或相反亦然。如果是,那麼爲什麼,如果不是,那爲什麼不呢?
- Ruby中的全局變量讓我想起了PHP中的邪惡
global $x
變量。 Ruby中的全局變量也被認爲是邪惡的,因此不應該被使用。或者,在某些情況下,在ruby中使用全局變量是有意義的? - 爲什麼常量不是常量並且允許改變它們的值?定義中的常數值應該是正確的?否則,我們可以使用另一個變量並且不要更改它的值。這會相當於紅寶石中的CONSTANT嗎?
- 解釋ruby中5個不同變量作用域之間區別的任何頁面/資源/鏈接?我喜歡保留一個方便參考。
- 在什麼用例下,我應該在我的代碼中使用特定的變量作用域。所以可以解釋所有5例可能會很酷的例子,這是我混淆的主要原因。
- 在java中是否有像
public
這樣的事實選擇?在大多數使用情況下,哪個安全下注?
感謝您抽出時間來閱讀和回答問題
對於第一點,所有對象共享類級變量,每個單獨的對象將有自己的局部變量副本 – 2012-07-15 20:01:12
如果每個單獨的對象都有自己的局部變量副本,那麼不是局部變量更像是實例變量然後? – CuriousMind 2012-07-15 20:02:53
排序,我想你可以這樣看他們。實例變量_屬於一個對象的實例,通常構成該對象的屬性。例如'Person'對象可能有兩個實例變量'@ first_name'和'@ last_name',它也可能有一個局部變量'x',但'x'與'Person'對象的狀態無關 – 2012-07-15 20:06:32