Ruby对象作为方法的块参数

示例

将&(&)放在参数前会将其作为方法的块传递。对象将Proc使用to_proc方法转换为。

class Greeter

  def to_proc

   Proc.newdo |item|

      puts "Hello, #{item}"

    end

  end

end

greet = Greeter.new

%w(world life).each(&greet)

这是Ruby中的常见模式,许多标准类都提供了这种模式。

例如,Symbolsto_proc通过将自身发送给参数来实现:

# 示例实施

class Symbol

  def to_proc

   Proc.newdo |receiver|

     receiver.sendself

    end

  end

end

这启用了有用的&:symbol习惯用法,通常用于Enumerable对象:

letter_counts = %w(just some words).map(&:length)  # [4、4、5]

           

以上是 Ruby对象作为方法的块参数 的全部内容, 来源链接: utcz.com/z/337895.html

回到顶部