ruby中Proc、Lamba的区别

本文深入探讨了Ruby中Proc与Lambda的区别,通过多个案例演示了两者在行为上的不同之处,包括如何处理参数、返回值及性能对比等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

proc和lambda最主要的区别就是可以把lambda看作和定义一个方法的行为是一致的,而proc是一个真正意义上的代码块。

## case 1
a = proc { |x| x }
p a.call # => nil

b = lambda { |x| x }
p b.call(2) # => exception if none
## case 2
def hi
  a = proc { return 3 }
  a.call
  4
end

def hello
  a = lambda { return 5 }
  a.call
  6
end

p hi  => 3 
p hello  => 6 
## case 3
def hi x
  x
end
p method(:hi).call(7) # to lambda

puts "*" * 50
## case last
def bar_1 &block
  block.call
end

def bar_2
  yield
end

require 'benchmark'
puts 'bar_1:'
p Benchmark.realtime {
  1_000_000.times do
    bar_1 { 'ok' }
  end
}

puts 'bar_2:'
p Benchmark.realtime {
  1_000_000.times do
    bar_2 { 'ok' }
  end
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值