zoukankan      html  css  js  c++  java
  • Ruby中区分运行来源的方法(转)

    Ruby中区分运行来源的方法

    这篇文章主要介绍了Ruby中区分运行来源的方法,本文讲解的是类似Python中的if name == 'main':效果,其实Ruby中也有类似语法,需要的朋友可以参考下

    当我们在写模块的时候,或多或少需要直接运行这个文件也可以执行一些方法,但是这样对于当这个模块被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条件成立,执行了输出

    called from direct running
    test method myfile=D:/Program Files/RubyMine 2017.1.5/workspace/test01/FileTest/string_utils.rb;load from D:/Program Files/RubyMine 2017.1.5/workspace/test01/FileTest/string_utils.rb
    

    引用Utils的类test.rb

    require_relative 'string_utils'
    Utils::StringUtils.test()
    

    运行结果,引入模块的条件不成立,没有输出called from direct running

    test method myfile=D:/Program Files/RubyMine 2017.1.5/workspace/test01/FileTest/string_utils.rb;load from D:/Program Files/RubyMine 2017.1.5/workspace/test01/FileTest/test1.rb
    
  • 相关阅读:
    SpringMVC+Spring+Mybatis框架集成
    Mybatis学习总结(三)——SqlMapConfig.xml全局配置文件解析
    Mybatis学习总结(二)——Mapper代理开发
    Mybatis学习总结(一)——入门基础
    Mybatis学习总结(九)——查询缓存
    Mybatis学习总结(八)——延迟加载
    1016 部分A+B (15分)
    1015 德才论 (25分)*
    1014 福尔摩斯的约会 (20分)
    1013 数素数 (20分)
  • 原文地址:https://www.cnblogs.com/wf0117/p/9500909.html
Copyright © 2011-2022 走看看