当我们在写模块的时候,或多或少需要直接运行这个文件也可以执行一些方法,但是这样对于当这个模块被require或者include时,显得不好,在ruby里,有没有区分运行来自当前文件,还是被require的目标文件调用呢?
python可以
比如像python这样
if __name__ == '__main__':
print "from direct running"
ruby当然也可以
对于处处为程序员着想,拥有快乐编程理念的ruby来说当然是可以区别的。其原理就是判断启动文件是否为模块的代码文件。
if __file__ == $0
puts 'called from direct running'
end
举个例子
工具类模块utils.rb
module utils
class stringutils
def self.test
puts "test method myfile=" + __file__ + ';load from ' + $0
end
end
end
if __file__ == $0
puts 'called from direct running'
utils::stringutils.test()
end
直接运行,结果,if条件成立,执行了输出
20:04:37-androidyue~/rubydir/test$ ruby utils.rb
called from direct running
test method myfile=utils.rb;load from utils.rb
引用utils的类test.rb
require './utils'
utils::stringutils.test()
运行结果,引入模块的条件不成立,没有输出called from direct running
20:08:07-androidyue~/rubydir/test$ ruby test.rb
test method myfile=/home/androidyue/rubydir/test/utils.rb;load from test.rb
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
循序渐进掌握递归正则表达式
一般来说,递归的正则表达式用来匹配任意嵌套层次的结构或左右对称的结构。例如匹配: 递归正则在正则表达式里算是比较灵活的部分,换句话说就是可能会比较难...
[阅读全文]
-
scrapy 使用
启动方式: 写一个启动文件,与配置文件同级 from scrapy.cmdline import execute import sys,os sys...
[阅读全文]
-
-
-
经典例题
例题: 1.用户输入账号 2.用户输入密码 3.判断用户的账号是不是alex 4.如果账号是alex在继续判断密码是不是alexdsb 5.账号和密...
[阅读全文]
-
-
-
-
-
网友评论