【问题标题】:skip first parameter in File.join跳过 File.join 中的第一个参数
【发布时间】: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


    【解决方案1】:

    不要忘记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,因此只有当值可能是文字false 时才需要对nil? 进行测试。如果不是这样,普通的if 就足够了。

    【讨论】:

    • @mudasobwa 那么他们应该really document that
    • 这是秘密武器。
    • @mudasobwa 我希望这不是我必须通过击败老板来解锁的 DLC!
    • File.join(*options.path, '**', '*.jpg') 呢?
    猜你喜欢
    • 2011-04-04
    • 2017-04-23
    • 2023-03-17
    • 2019-08-17
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2021-04-08
    • 2011-01-07
    相关资源
    最近更新 更多