我正在try 编写一个脚本,根据指定目录是否存在,自动签出或更新Subversion URL.

出于某种原因,我的代码不起作用,即使它是假的,也总是返回true:

def directory_exists?(directory)
  return false if Dir[directory] == nil
  true
end

我做错了什么?

推荐答案

如果您要查找的文件是否是目录而不仅仅是文件很重要,那么可以使用100101.仅当文件存在且为目录时,才会返回true.

另一方面,编写该方法的一种更惯用的方法是利用Ruby自动返回方法中最后一个表达式的结果这一事实.因此,你可以这样写:

def directory_exists?(directory)
  File.directory?(directory)
end

请注意,在本例中不需要使用方法.

Ruby相关问答推荐

Ruby类构造函数使用`()`而不是`. new()`

Rails 7 - 访问连接模型生成新查询

查看 Savon 请求 XML 而不发送到服务器

Ruby 符号到类

如何在 Sinatra 中解析 JSON 请求正文一次并将其公开给所有路由?

Ruby 在与源相同的目录中加载配置(yaml)文件

Ruby - 将块传递给方法

hash['key'] 到 Ruby 中的 hash.key

可可豆荚安装在iOS项目上不起​​作用

如何在 Ruby 中临时重定向标准错误?

如何在Ruby中获取终端窗口的宽度

array.include?多个值

Ruby 被空格分割

从类对象获取类位置

在不同的换行符上拆分

Ruby中的file.open、open和IO.foreach,有什么区别?

Ruby 1.9 哈希,键中有破折号

如何在 Ruby 中向异常消息中添加信息?

`gem install therubyracer` 在 Mac OS X Lion 上失败

查找模块中可用的类