$/ 在 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
的输入。
我在这个页面中发现了一些可能很有趣的东西:
http://www.zenspider.com/Languages/Ruby/QuickRef.html#18
$/ # The input record separator (eg #gets). Defaults to newline.
$表示它是一个全局变量。
但是这个很特别,因为它被 Ruby 使用。 Ruby 使用该变量作为输入记录分隔符
有关特殊全局变量的完整列表,请参阅:
http://www.rubyist.net/~slagell/ruby/globalvars.html
此代码试图将每个对象读入一个数组元素,因此您需要告诉它一个对象在哪里结束,下一个对象从哪里开始。 $/="\n\n"
行设置了 ruby 用来将文件拆分成的内容。
$/
被称为 "input record separator" 并且是在您读入文件时用于拆分文件的值。默认情况下,此值设置为新行,因此当您阅读在文件中,每一行都将放入一个数组中。什么设置这个值,你告诉 ruby 一个新行不是中断的结束,而是使用给定的字符串。
例如,如果我有一个逗号分隔的文件,我可以写 $/=","
然后如果我在这样的文件上执行类似您的代码的操作:
foo, bar, magic, space
我会直接创建一个数组,而不必再次拆分:
["foo", " bar", " magic", " space"]
因此您的行将查找两个换行符,并在每组两个而不是每个换行符上拆分。当一行为空时,您只会得到两个换行符。所以这一行告诉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
的输入。
我在这个页面中发现了一些可能很有趣的东西: http://www.zenspider.com/Languages/Ruby/QuickRef.html#18
$/ # The input record separator (eg #gets). Defaults to newline.
$表示它是一个全局变量。
但是这个很特别,因为它被 Ruby 使用。 Ruby 使用该变量作为输入记录分隔符
有关特殊全局变量的完整列表,请参阅: http://www.rubyist.net/~slagell/ruby/globalvars.html
此代码试图将每个对象读入一个数组元素,因此您需要告诉它一个对象在哪里结束,下一个对象从哪里开始。 $/="\n\n"
行设置了 ruby 用来将文件拆分成的内容。
$/
被称为 "input record separator" 并且是在您读入文件时用于拆分文件的值。默认情况下,此值设置为新行,因此当您阅读在文件中,每一行都将放入一个数组中。什么设置这个值,你告诉 ruby 一个新行不是中断的结束,而是使用给定的字符串。
例如,如果我有一个逗号分隔的文件,我可以写 $/=","
然后如果我在这样的文件上执行类似您的代码的操作:
foo, bar, magic, space
我会直接创建一个数组,而不必再次拆分:
["foo", " bar", " magic", " space"]
因此您的行将查找两个换行符,并在每组两个而不是每个换行符上拆分。当一行为空时,您只会得到两个换行符。所以这一行告诉Ruby,当读取文件时,在空行处换行而不是每一行。