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
    
  • 相关阅读:
    create-react-app
    简单的PHP的任务队列
    Yii框架中使用PHPExcel导出Excel文件
    Android 使用全局变量的问题
    Android 退出整个应用程序
    new DialogInterface.OnClickListener()报错的解决办法
    Yii 日期时间过滤列 filter
    Yii 时间戳格式化显示的问题
    PullToRefreshListView 应用讲解
    Android:Layout_weight的深刻理解
  • 原文地址:https://www.cnblogs.com/wf0117/p/9500909.html
Copyright © 2011-2022 走看看