我可以使用'&'速记来选择匹配项吗?

时间:2018-08-21 20:03:32

标签: ruby block proc

我有此代码:

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'))

这会引发语法错误。

2 个答案:

答案 0 :(得分:4)

似乎您可以使用grep

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

或使用自定义proc:

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))

答案 1 :(得分:2)

  

[我可以这样做吗],而无需使用单独的proc

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