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
    
  • 相关阅读:
    JavaScript中的编码函数
    Redis 客户端命令总结
    Java 实现网络图片的读取与下载
    JavaScript实现单张图片上传功能
    HTML+CSS实现页面豆腐块布局和图片居中
    Java 获取当前项目所在服务器的 IP 地址
    JavaScripts中关于数字的精确计算方法
    遍历HashMap的四种方法
    java中URL 的编码和解码函数
    equals ==
  • 原文地址:https://www.cnblogs.com/wf0117/p/9500909.html
Copyright © 2011-2022 走看看