【发布时间】:2018-01-19 18:07:53
【问题描述】:
我想使用 File.join 创建路径,但是如果第一个参数为空,我如何跳过它,或者如何在不使用 If 语句的情况下编写此代码
image_files_path =
if options.path.nil?
File.join('**', '*.jpg')
else
File.join(options.path, '**', '*.jpg')
end
【问题讨论】:
标签: ruby
我想使用 File.join 创建路径,但是如果第一个参数为空,我如何跳过它,或者如何在不使用 If 语句的情况下编写此代码
image_files_path =
if options.path.nil?
File.join('**', '*.jpg')
else
File.join(options.path, '**', '*.jpg')
end
【问题讨论】:
标签: ruby
不要忘记Ruby 可以splat 参数,所以这实际上非常简单。您可以选择性地添加它:
args = %w[ ** *.jpg ]
if (options.path)
args.unshift(options.path)
end
File.join(*args)
或者你可以默认放入,如果是nil就去掉:
File.join(*[ options.path, '**', '*.jpg' ].compact)
重要的是要注意,Ruby 中唯一逻辑上为假的是nil 和false,因此只有当值可能是文字false 时才需要对nil? 进行测试。如果不是这样,普通的if 就足够了。
【讨论】:
File.join(*options.path, '**', '*.jpg') 呢?