【问题标题】:Can I use '&' shorthand for selecting matches?我可以使用 '&' 简写来选择匹配项吗?
【发布时间】:2018-08-21 20:03:31
【问题描述】:

我有这个代码:

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

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

我试过了:

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

这会引发语法错误。

【问题讨论】:

    标签: ruby block proc


    【解决方案1】:

    看来你可以使用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))
    

    【讨论】:

    • 是的,grep 是一个很棒的工具。我用的不够。
    【解决方案2】:

    [我可以这样做吗] 不使用单独的过程

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多