为什么我的dir.foreach没有认识到我在红宝石中的道路

时间:2018-03-15 04:11:28

标签: ruby

这是我的代码

folder_results = Dir.foreach(Dir.pwd) {|x| File.extname(x) }

我也试过:

folder_results = Dir.foreach("nice/") {|x| File.extname(x) }

这是我的Ruby cmd错误,我已经多次尝试这种错误

你可以看到Ruby cmd中使用的ruby路径

Ruby cmd errors

编辑:

这就是文件目录看起来很漂亮:

List of folders

2 个答案:

答案 0 :(得分:1)

您应该将File.extname结果保存到数组,而不是直接从Dir.foreach分配结果,该结果始终返回nil。

folder_results = []
Dir.foreach(Dir.pwd) { |x| folder_results << File.extname(x) }

现在,您可以从folder_results数组中获取文件扩展名。

否则,您可以使用map。感谢engineersmnky指出了这一点。

folder_results = Dir.foreach(Dir.pwd).map { |x| File.extname(x) } – 

答案 1 :(得分:0)

错误消息来自Dir.foreach,并说提供的参数不是目录。

在你简单地把'nice'作为参数的情况下,我会得出结论,这个目录不存在,但由于错误消息也出现在Dir.pwd作为参数,这意味着Ruby的想法是什么工作目录是,必须搞砸了。实际上,错误消息表明Dir.pwd的结果是字符串pwd,这是无意义的:Dir.pwd始终返回绝对路径。为了验证确实如此,我会在违规行之前做puts(Dir.pwd),但我想这也会显示pwd

这意味着你必须找出你的程序中的哪个点工作目录搞砸了。程序启动时一定要好(但请检查!),然后缩小搜索范围,直至找到罪魁祸首。

除了这个问题,你的程序在逻辑上是有缺陷的。您计算所有文件扩展名,但随后将结果丢弃,而folder_results将始终为nil