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
    
  • 相关阅读:
    Ftp、Ftps与Sftp之间的区别
    Previous Workflow Versions in Nintex Workflow
    Span<T>
    .NET Core 2.0及.NET Standard 2.0 Description
    Announcing Windows Template Studio in UWP
    安装.Net Standard 2.0, Impressive
    SQL 给视图赋权限
    Visual Studio for Mac中的ASP.NET Core
    How the Microsoft Bot Framework Changed Where My Friends and I Eat: Part 1
    用于Azure功能的Visual Studio 2017工具
  • 原文地址:https://www.cnblogs.com/wf0117/p/9500909.html
Copyright © 2011-2022 走看看