我是 Ruby 的新手,所以請您向我解釋一件事。這是我的代碼檔案:
class You
def method
puts "are the best"
end
end
CONST = "const value"
var = "var value"
我需要在另一個檔案或irb. 之后,我可以訪問除var. 據我所知,Ruby 通過大寫來區分常量和變數。但是為什么不匯出變數?
uj5u.com熱心網友回復:
事實上,Ruby 中沒有頂級宣告。所有執行都在Object類的背景關系中執行(它也是 Ruby 中每個類的基類),因此每個頂級宣告也是Object該類的私有成員。實體變數具有 at-sign 前綴 ( @),因此您的變數var甚至不是實體變數,它只是本地變數,無法在其范圍之外訪問。此外,Ruby 中的實體變數也始終是私有的。
相反,您可以將其設為實體變數并為其定義 getter 和(可選)setter:
# file.rb
@var = "var value"
def var
@var
end
def var=(val)
@var = val
end
接著:
$ irb -r ./file.rb
irb(main):001:0> var
=> "var value"
irb(main):002:0> var = "another var value"
=> "another var value"
irb(main):003:0> var
=> "another var value"
uj5u.com熱心網友回復:
不匯出區域變數,因為這require是記錄的作業方式:
加載的源檔案中的任何常量或全域變數將在呼叫程式的全域命名空間中可用。但是,區域變數不會傳播到加載環境。
常量(包括Youin class You)并且是全域范圍的,因為在沒有顯式匯出機制的情況下,這通常是您想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/394455.html
標籤:红宝石
上一篇:如何使用控制臺在ruby??onrails專案中列出設計用戶?
下一篇:Ruby中的二維陣列金字塔?
