我想通过使用File.join创建一个路径,但是如果它是null,我怎么能跳过第一个参数?如果不使用If语句我怎么能写这个代码
image_files_path =
if options.path.nil?
File.join('**', '*.jpg')
else
File.join(options.path, '**', '*.jpg')
end
答案 0 :(得分:2)
不要忘记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
,因此只有在值可能是文字的情况下才需要nil?
的测试{ {1}}。如果情况并非如此,那么常规false
就足够了。