浅析Ruby中的DATA对象
程序员文章站
2022-08-29 19:46:50
这段代码能运行吗? 这个data是什么东西?
require 'erb'
data = data.read
max = 15_000
title = "he...
这段代码能运行吗? 这个data是什么东西?
require 'erb'
data = data.read
max = 15_000
title = "hello world!"
content = "hello world!\n" * 10
max.times{
erb.new(data).result(binding)
}
__end__
<html>
<head> <%= title %> </head>
<body>
<h1> <%= title %> </h1>
<p>
<%= content %>
</p>
</body>
</html>
这个神奇的data是一个io对象,读取__end__
之后内容。 有一点需要注意的是data.read
会将__end__
之后的内容一次性读出,由于io读取的特性,当第 二次data.read
的时候内容就会为空,如果需要第二次读取,那么先要执行data.rewind
。
有的时候我们写一个脚本来做一些自动化的工作,需要预先读取一个文件的内容,作为输入或者作为模版,我们可以先把这部分内容附到__end__
后,然后用data
来读取,因为它是标准的io对象,我们可以像处理普通文件一样处理__end__
后的内容,如上面的代码所示,用来存储erb
内容作为模版,然后再进行处理,非常的方便。
上一篇: 刘禅真的是一个扶不起的阿斗吗 刘禅真的有那么差劲吗
下一篇: 详解Ruby当中的算数运算