【问题标题】:Ruby Block to ArrayRuby 块到数组
【发布时间】:2013-03-03 03:15:19
【问题描述】:

我正在尝试在方法中获取块参数,并将内容(符号数组)转换为数组。例如:

def sequence(&block)
  # ?
end

sequence do
  :foo,
  :bar,
  :foobar
end # => [:foo, :bar, :foobar]

我知道在 sequence 方法中只使用一个数组作为参数会更容易,但我试图与另一种方法保持一致。

【问题讨论】:

    标签: ruby lambda block proc


    【解决方案1】:

    这种语法在 Ruby 中是不允许的,所以很遗憾这是不可能的,因为代码甚至无法通过解析器。

    【讨论】:

      【解决方案2】:

      好的,不回答确切的问题,我想你和dirk 知道这一点,但是...

      如果有人想要 Array 作为参数并且他们的搜索将他们带到这里,Ruby 确实有一个基本功能可以为您做类似的事情:

      def f *x
        x
      end
      
      p f :foo,
          :bar,
          :foobar 
      
      # => [:foo, :bar, :foobar]
      

      【讨论】:

        【解决方案3】:

        虽然您建议的语法不会通过解析器,但还是有一些调整:

        def sequence(&block)
          yield
        end
        
        sequence do [
          :foo,
          :bar,
          :foobar
        ] end # => [:foo, :bar, :foobar]
        
        sequence do _= 
          :foo,
          :bar,
          :foobar
        end # => [:foo, :bar, :foobar]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-12
          • 2013-06-20
          • 2014-08-22
          • 2017-06-11
          • 2016-04-01
          • 2012-03-22
          • 2017-08-07
          • 2016-01-16
          相关资源
          最近更新 更多