__END__之后的数据库的Ruby范围

前端之家收集整理的这篇文章主要介绍了__END__之后的数据库的Ruby范围前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用这个Ruby窍门与__END__和DATA将一些数据放在我的程序文件中:
class Foo
  def initialize()
    puts DATA.read.inspect
  end
end
puts DATA.read.inspect
Foo.new
__END__
test

这将生成以下输出

"test"
""

我假设DATA在全球范围内是一样的,但是在课堂里没有内容.如何在__END__之内访问数据(除了使用全局变量的明显而丑的解决方案之外)?

ADDED:我看到第二次读数据两次给我什么.我可以使用倒带重新开始,但阅读然后给我我的程序的整个源代码.有没有更简单的方法可以在__END__之后的部分继续使用DATA,或者我会更好地阅读它,并将其存储在其他地方以备将来使用?

解决方法

DATA是一样的你会得到相同的输出,如果不是做Foo.new,你会做DATA.read第二次.

这是因为在第一次读取DATA(这是一个IO)已经到达流的末尾之后,所以任何进一步的读取都将返回一个空字符串,除非你附加数据到DATA或将数据倒回到流的开头.

编辑:要在__END__之后再次回到目标位置,您必须先读取DATA.pos,然后再执行任何数据读取操作,然后在读取后将pos还原到该值.最简单的解决方案可能只是在脚本开始时执行FOO = DATA.read,然后使用FOO.

猜你在找的MsSQL相关文章