问题标签 [proc-object]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
8345 浏览

ruby - 如何在 Ruby 中编组 lambda (Proc)?

Joe Van Dyk询问了 Ruby 邮件列表

你好,

在 Ruby 中,我猜你不能编组一个 lambda/proc 对象,对吧?这可能在 lisp 或其他语言中吗?

我想做的是:

所以,我正在向 BackgroundJob 发送一个 lambda 对象,其中包含要做什么的上下文/代码。但是,估计那是不可能的。我最终编组了一个普通的 ruby​​ 对象,其中包含程序运行后要做什么的说明。

0 投票
4 回答
7311 浏览

ruby - 你如何对 Ruby 代码进行字符串化/序列化?

我希望能够在我的 Ruby 代码中编写 lambda/Proc,对其进行序列化以便我可以将其写入磁盘,然后稍后执行 lambda。有点像...

后来,在单独运行 Ruby 解释器时,我想说...

Marshal.dump 不适用于 Procs。我知道 Perl 有Data::Dump::Streamer,而在 Lisp 中这是微不足道的。但是有没有办法在 Ruby 中做到这一点?换句话说, 的实施将是什么?save_for_later

编辑我下面的答案很好,但它不会关闭自由变量(如x)并将它们与 lambda 一起序列化。所以在我的例子中......

...字符串输出不包含x. 是否有考虑到这一点的解决方案,也许是通过序列化符号表?你可以在 Ruby 中访问它吗?

编辑 2:我更新了我的答案以包含序列化局部变量。这似乎可以接受。

0 投票
1 回答
139 浏览

ruby - 为什么这段代码在 Proc.call 之后会产生 nil?

什么原因导致零?

0 投票
1 回答
116 浏览

ruby - ArgumentError 调用 Proc

当我尝试调用上面的过程时,我得到:

我的期望是,如果方法是用这种类型的签名定义的,我可以将 proc 传递给方法:

然后我可以像这样执行proc insiide foo:

0 投票
2 回答
111 浏览

ruby - 如何将两个参数传递给具有单参数签名的方法?

怎么one_arg知道&s

0 投票
3 回答
16442 浏览

ruby - 为什么显式返回会对 Proc 产生影响?

我认为关键字在 Ruby 中是可选的,并且无论您是否请求它return,您总是会选择它。return鉴于此,我发现令人惊讶的是,foo并且具有不同的输出是由包含显式inbar的事实决定的。fooreturnProc f

有谁知道为什么会这样?

0 投票
1 回答
195 浏览

ruby - 对 Ruby 中的 procs 和 lambdas 有什么“简单”的解释吗?

对 Ruby 中的 procs 和 lambdas 有什么“简单”的解释吗?

0 投票
3 回答
6688 浏览

tcl - 如何打印出 tcl proc?

给定一个简单的 tcl proc

我可以使用什么 tcl 命令来打印出程序foo……也就是说,我想要返回 proc的文本……

例如:

我怎么foo {a b} {puts "$a $b"}回来?

0 投票
1 回答
128 浏览

ruby - 使用 Proc.call 与 Proc.[] 是否存在 Ruby 优先级问题?

最近我和一个朋友讨论了 Ruby 的Proc. Proc您可以通过多种方式之一调用 a 。一种方法是调用Proc.call

另一种是使用大括号,Proc.[]

这里是否有任何潜在的优先级问题,或者这两个语句完全可以互换?如果不是,您能否提供一个可以提供不同结果的上下文示例?

0 投票
8 回答
66568 浏览

ruby - 在 Ruby 块中使用“返回”

我正在尝试将 Ruby 1.9.1 用于嵌入式脚本语言,以便将“最终用户”代码编写在 Ruby 块中。这样做的一个问题是我希望用户能够在块中使用“return”关键字,因此他们不需要担心隐式返回值。考虑到这一点,这是我想做的事情:

如果我在上面的例子中使用'return',我会得到一个 LocalJumpError。我知道这是因为有问题的块是 Proc 而不是 lambda。如果我删除'return',代码就可以工作,但我真的更希望能够在这种情况下使用'return'。这可能吗?我尝试将块转换为 lambda,但结果是一样的。