【问题标题】:why File.expand_path(__FILE__)?为什么 File.expand_path(__FILE__)?
【发布时间】:2014-05-03 08:36:18
【问题描述】:

我一直在研究 ruby​​ 和 Sinatra 和 Rails 等框架,我看到了这样的代码:

File.expand_path(..., __FILE__) # this returns something like /Users/.../app/something.rb

而不是仅仅从:

File.expand_path(..., ".") # this returns something like /Users/.../app

既然都返回有效路径和已知路径,是否有任何理由从 __FILE__ 而不是“.”开始导航?

提前致谢。

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

__dir__ 或 (__FILE__) 不一定与 "." 相同。前者是文件的位置。后者是调用主命令的位置(或被Dir.chdir 等命令更改的位置)。

【讨论】:

    【解决方案2】:

    __FILE__ 代表当前文件,而'.' 代表当前目录代码执行。因此,与 '.' 相比,您必须在当前文件之前上一级 (..) 才能访问特定文件。

    从我have read 看来,它一种丑陋的使用方式。开发人员根据直觉使用它,这完全取决于项目/社区采用的约定。

    【讨论】:

    • 您的链接已过时。关键是__FILE__ 需要额外的..,这很棘手。但在现代 Ruby 中,应该使用__dir__ 来避免这个问题。
    • 嗯。同意。不知道__dir__ 成语。也许,__FILE__ 仍在某些项目中使用,以支持向后兼容以前的 Ruby 版本。
    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 2019-03-24
    • 1970-01-01
    • 2014-08-08
    • 2022-10-05
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多