[英]What does $/ mean in Ruby?
我正在閱讀有關 Ruby 序列化的信息( http://www.skorks.com/2010/04/serializing-and-deserializing-objects-with-ruby/ )並遇到以下代碼。 $/ 是什么意思? 我假設 $ 指的是一個對象?
array = []
$/="\n\n"
File.open("/home/alan/tmp/blah.yaml", "r").each do |object|
array << YAML::load(object)
end
$/
是一個預定義的變量。 它用作輸入記錄分隔符,默認值為"\\n"
。
像gets
這樣的函數使用$/
來確定如何分隔輸入。 例如:
$/="\n\n"
str = gets
puts str
因此,您必須輸入ENTER兩次才能結束str
的輸入。
參考:預定義變量
這段代碼試圖將每個對象讀入一個數組元素,因此您需要告訴它一個對象的結束位置和下一個對象的開始位置。 行$/="\\n\\n"
正在設置 ruby 用來將文件分解成的內容。
$/
被稱為“輸入記錄分隔符”,是在您讀入文件時用於拆分文件的值。默認情況下,此值設置為新行,因此當您讀入文件時,每一行都將是放入一個數組中。 什么設置這個值,你告訴 ruby 一個新行不是中斷的結束,而是使用給定的字符串。
例如,如果我有一個逗號分隔的文件,我可以寫$/=","
然后如果我在這樣的文件上執行類似於您的代碼的操作:
foo, bar, magic, space
我會直接創建一個數組,而不必再次拆分:
["foo", " bar", " magic", " space"]
因此,您的行將查找兩個換行符,並在每組兩個而不是每個換行符上拆分。 當一行為空時,您只會得到兩個換行符。 所以這一行告訴 Ruby,在讀取文件時,在空行而不是每一行上中斷。
我在這個頁面發現了一些可能很有趣的東西: http : //www.zenspider.com/Languages/Ruby/QuickRef.html#18
$/ # 輸入記錄分隔符(例如#gets)。 默認為換行符。
$ 表示它是一個全局變量。
然而,這是特別的,因為它被 Ruby 使用。 Ruby 使用該變量作為輸入記錄分隔符
有關特殊全局變量的完整列表,請參見: http : //www.rubyist.net/~slagel/ruby/globalvars.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.