【问题标题】:How to use &: in Ruby?如何在 Ruby 中使用 &:?
【发布时间】:2021-06-04 00:13:00
【问题描述】:

我有以下构造(简化):

puts ['a!', 'b!', 'c?'].select { |f| f if f.end_with?('!') }

打印出来

a!
b!

我想用一个 & 来使它更短:

puts ['a!', 'b!', 'c?'].select(&:end_with?('!'))

但我得到一个错误:

..., 'c?'].select(&:end_with?('!'))
                                 _
x.rb:4: syntax error, unexpected ')', expecting end-of-input

我该如何解决这个问题?

【问题讨论】:

  • ['a!', 'b!', 'c?'].grep(/!\z/) ;-)

标签: arrays ruby filter


【解决方案1】:

您可以将代码简化一点,如下:

puts ['a!', 'b!', 'c?'].select { |f| f.end_with?('!') }

你不需要块来返回元素;你只需要它返回一个“真实”的值。

但是,正如您所发现的,&:end_with?('!') 不是有效的 ruby​​ 语法。

有various ways 你可以尝试实现类似的聪明东西,但总的来说我建议坚持上面的语法。

【讨论】:

    猜你喜欢
    • 2019-10-11
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2021-08-04
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多