为什么我的dir.foreach没有在ruby中识别我的路径
下面是我的代码为什么我的dir.foreach没有在ruby中识别我的路径,ruby,Ruby,下面是我的代码 folder_results = Dir.foreach(Dir.pwd) {|x| File.extname(x) } 我也尝试过: folder_results = Dir.foreach("nice/") {|x| File.extname(x) } 这是我的Ruby cmd错误,我尝试过很多次,用了很多不同的方法 您可以看到ruby命令中使用的ruby路径 编辑: 这是nice的文件目录的外观: 错误消息来自Dir.foreach,表示提供的参数不是目录 在您简单地
folder_results = Dir.foreach(Dir.pwd) {|x| File.extname(x) }
我也尝试过:
folder_results = Dir.foreach("nice/") {|x| File.extname(x) }
这是我的Ruby cmd错误,我尝试过很多次,用了很多不同的方法
您可以看到ruby命令中使用的ruby路径
编辑:
这是nice的文件目录的外观:
错误消息来自
Dir.foreach
,表示提供的参数不是目录
在您简单地将'nice'作为参数的情况下,我会得出结论,这个目录不存在,但是由于Dir.pwd
作为参数也会出现错误消息,这意味着Ruby对工作目录的概念一定是混乱的。实际上,错误消息说Dir.pwd
的结果将是字符串pwd
,这是毫无意义的:Dir.pwd
始终返回绝对路径。为了验证这是真的,我会在有问题的行之前执行一个put(Dir.pwd)
,但我想这也会显示pwd
这意味着您必须找出,在您的程序的哪个点上,工作目录被弄乱了。它必须在程序开始时正常(但请检查!),并缩小搜索范围,直到找到罪犯
顺便说一句,除了这个问题,你的程序在逻辑上是有缺陷的。您计算所有文件扩展名,但随后将结果扔掉,文件夹\u结果将始终为
nil
您应该将文件.extname
结果保存到数组中,而不是直接从Dir.foreach
分配结果,后者始终返回nil
folder_results = []
Dir.foreach(Dir.pwd) { |x| folder_results << File.extname(x) }
有更多的代码,但我相信我一定是做错了这里请显示您所有的代码。你想完成什么。Dir.foreach返回nil,因为它刚刚对传递给itI的每个项目执行了块,但仍然只得到了一行代码的相同错误。请给出完整的方法;这是一个完整的方法,我把它作为一个文件写了进来,同样的错误
map
更为惯用,例如folder_results=Dir.foreach(Dir.pwd).map{x | file.extname(x)}
是的,你是对的。我只是解释了实际代码的行为。我会更新答案。
folder_results = Dir.foreach(Dir.pwd).map { |x| File.extname(x) } –