加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

__END__之后的数据库的Ruby范围

发布时间:2020-12-12 16:13:30 所属栏目:MsSql教程 来源:网络整理
导读:我使用这个Ruby窍门与__END__和DATA将一些数据放在我的程序文件中: class Foo def initialize() puts DATA.read.inspect endendputs DATA.read.inspectFoo.new__END__test 这将生成以下输出: "test""" 我假设DATA在全球范围内是一样的,但是在课堂里没有内容
我使用这个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读