繁体   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