簡體   English   中英

$/ 在 Ruby 中是什么意思?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM