Ruby 关于把代码块转换为 Proc 的问题

2604249649 · 2023年03月03日 · 最后由 2604249649 回复于 2023年03月04日 · 532 次阅读

我看元编程一书在 4.5 节介绍了可调用对象,对书里的有些描述感到有些困惑。

1、Proc 对象产生的方式有几种

书上说已经介绍了四种

书上说已经介绍了四种,但是我怎么只看到了三种:使用Proc.new 一种lambda 一种->lambda 操作符一种,所以 Proc 对象到底有几种产生方式

2、&操作符

&操作符的作用

&操作符的作用到底是将 Proc 对象转为代码块使用,还是将代码块转为 Proc 对象使用

我有点搞懵了,有大佬能指点我一下么?

  1. &
  2. 都可以

茴香豆的四种写法

Proc.new { |x| x + 1 }
proc { |x| x + 1 }

lambda { |x| x + 1 }
->(x) { x + 1 }

给你一个 chatgpt 的解释

操作符在參數列表和在函數體裏意義不同應該是 c 以來的傳統藝能,c 的*在參數就是聲明指針,在函數體就是取值,同理 ruby 的&在參數裏是聲明 block,在函數體是轉換成 block

我明白了,谢谢大佬们的解答

u1450154824 回复

牛的,我都忘记还有 chatgpt 可以问了

2604249649 关闭了讨论。 03月04日 12:18
需要 登录 后方可回复, 如果你还没有账号请 注册新账号