Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的dir.foreach没有在ruby中识别我的路径_Ruby - Fatal编程技术网

为什么我的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) } –