【问题标题】:Cool way to call methods on multiple objects in Ruby?在 Ruby 中调用多个对象的方法的酷方法?
【发布时间】:2010-09-27 11:51:57
【问题描述】:

很久以前,我在 Ruby 中看到了这个技巧。而不是做(例如)

if array1.empty? and array2.empty? and array3.empty?

您可以一次调用所有对象并在最后附加操作,有点像

if %w(array1 array2 array3).each { |a| a.empty? }

但我认为它比那更简单......或者,它可能就是那样。我真的不知道,但这就是为什么我有兴趣找出答案。谢谢。

【问题讨论】:

  • %w() 根据空格分割的内容创建一个数组。一个简单的 [] 数组在这里就可以了。否则,我认为我和 J Cooper 在一起?事物。更好的是,检查上面的内容让我想起了我忘记的 %W() 数组。

标签: ruby object methods


【解决方案1】:

if [array1, array2, array3].all? { |a| a.empty? }

我想这就是你要找的东西

【讨论】:

    【解决方案2】:

    如果您使用的是 Rails 或 Ruby 1.9,则可以使用 Symbol#to_proc:

    [array1, array2, array3].all?(&:empty?)
    

    【讨论】:

      【解决方案3】:

      J Cooper 说得对,但只是添加一个脚注:

      %w(array1 array2 array3) # => ["array1", "array2", "array3"]
      

      %w 获取一个字符串并将其拆分为空格以返回一个字符串数组

      【讨论】:

        【解决方案4】:

        附带说明,Symbol#to_proc 可能存在性能问题,因此在值得阅读的情况下使用它。

        【讨论】:

          猜你喜欢
          • 2019-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-26
          • 1970-01-01
          • 2011-02-05
          相关资源
          最近更新 更多