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