跳过File.join中的第一个参数

时间:2018-01-19 18:07:53

标签: ruby

我想通过使用File.join创建一个路径,但是如果它是null,我怎么能跳过第一个参数?如果不使用If语句我怎么能写这个代码

image_files_path =
  if options.path.nil?
    File.join('**', '*.jpg')
  else
    File.join(options.path, '**', '*.jpg')
  end

1 个答案:

答案 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中逻辑上错误的唯一内容是nilfalse,因此只有在值可能是文字的情况下才需要nil?的测试{ {1}}。如果情况并非如此,那么常规false就足够了。