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
    
  • 相关阅读:
    UID卡、CUID卡、FUID卡的区别
    高中数学B版 高中数学A版
    Cenots7 服务搭建之搞清用户和组
    Flink 流处理 word count
    Flink Batch File Word Count
    Flink程序运行完yarn 模式后,返回运行standalone模式运行时。经常会出现运行不成功原因分析.
    Kafka消费者 API(自动提交offset)
    kafka 同步发送消息
    kafka 自定义分区
    kafka生产者 API Demo
  • 原文地址:https://www.cnblogs.com/wf0117/p/9500909.html
Copyright © 2011-2022 走看看