代码之家  ›  专栏  ›  技术社区  ›  Michael Durrant

我可以用'&'速记来选择比赛吗?

  •  0
  • Michael Durrant  · 技术社区  · 6 年前

    result=
    ["MA-1", "NY-2", "CT-2", "NJ-1", "NJ-2", "NJ-3"].select do |element|
      element.match '2'
    end
    

    有没有办法使用 & 不使用单独进程的快捷方式?

    ["MA-1", "NY-2", "CT-2", "NJ-1", "NJ-2", "NJ-3"].select(&:match('2'))
    

    这会引发语法错误。

    2 回复  |  直到 6 年前
        1
  •  4
  •   Ilya    6 年前

    好像你可以用 grep :

    ["MA-1", "NY-2", "CT-2", "NJ-1", "NJ-2", "NJ-3"].grep(/2/)
    #=> ["NY-2", "CT-2", "NJ-2"]
    

    my_proc = ->(e) { e.match('2') }
    ["MA-1", "NY-2", "CT-2", "NJ-1", "NJ-2", "NJ-3"].select(&my_proc)
    #=> ["NY-2", "CT-2", "NJ-2"]
    

    或(给@engineersmnky的学分):

    select(&/2/.method(:match))
    
        2
  •  2
  •   Sergio Tulentsev    6 年前

    不,主要是因为 & 符号也不是可以接受参数的方法或任何东西。你必须使用完整的表格。