__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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |