gpt4 book ai didi

ruby - 为什么 puts File.expand_path(File.dirname(File.dirname(__FILE__))) 给我不同的结果?

转载 作者:数据小太阳 更新时间:2023-10-29 07:59:17 25 4
gpt4 key购买 nike

在 Win7 上使用 ruby​​ 2.0.0p481 (2014-05-08) [x64-mingw32]

在一个目录中(准确地说是d:\download\ruby)我有两个文件——calling.rb 和 called.rb

调用.rb

require_relative 'called'
print_path()

called.rb

def print_path()
puts "File.expand_path(File.dirname(__FILE__)) is #{File.expand_path(File.dirname(__FILE__))}"
puts "File.expand_path(File.dirname(File.dirname(__FILE__))) is #{File.expand_path(File.dirname(File.dirname(__FILE__)))}"
puts File.expand_path(File.dirname(__FILE__))
end
print_path()

有人可以解释为什么直接执行 called.rb 给我

d:\download\ruby>ruby called.rb
File.expand_path(File.dirname(__FILE__)) is d:/download/ruby
File.expand_path(File.dirname(File.dirname(__FILE__))) is d:/download/ruby
d:/download/ruby

与使用来自 calling.rb 的相同代码时不同的结果?

d:\download\ruby>ruby calling.rb
File.expand_path(File.dirname(__FILE__)) is d:/download/ruby
File.expand_path(File.dirname(File.dirname(__FILE__))) is d:/download
d:/download/ruby
File.expand_path(File.dirname(__FILE__)) is d:/download/ruby
File.expand_path(File.dirname(File.dirname(__FILE__))) is d:/download
d:/download/ruby

d:\download\ruby>

最佳答案

因为__FILE__是当前源文件名,'current'是这里的关键字。

您还将获得嵌套中目录的目录名称。

要解决此问题,也许以下 puts 行会有所帮助:

def print_path()
puts "File.expand_path(File.dirname(__FILE__)) is #{File.expand_path(File.dirname(__FILE__))}"
puts "File.expand_path(File.dirname(File.dirname(__FILE__))) is #{File.expand_path(File.dirname(File.dirname(__FILE__)))}"
puts File.expand_path(File.dirname(__FILE__))
end

关于ruby - 为什么 puts File.expand_path(File.dirname(File.dirname(__FILE__))) 给我不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com