问题标签 [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.
ruby - 如何在 Ruby 中编组 lambda (Proc)?
Joe Van Dyk询问了 Ruby 邮件列表:
你好,
在 Ruby 中,我猜你不能编组一个 lambda/proc 对象,对吧?这可能在 lisp 或其他语言中吗?
我想做的是:
所以,我正在向 BackgroundJob 发送一个 lambda 对象,其中包含要做什么的上下文/代码。但是,估计那是不可能的。我最终编组了一个普通的 ruby 对象,其中包含程序运行后要做什么的说明。
乔
ruby - 你如何对 Ruby 代码进行字符串化/序列化?
我希望能够在我的 Ruby 代码中编写 lambda/Proc,对其进行序列化以便我可以将其写入磁盘,然后稍后执行 lambda。有点像...
后来,在单独运行 Ruby 解释器时,我想说...
Marshal.dump 不适用于 Procs。我知道 Perl 有Data::Dump::Streamer,而在 Lisp 中这是微不足道的。但是有没有办法在 Ruby 中做到这一点?换句话说, 的实施将是什么?save
_
for_
later
编辑:我下面的答案很好,但它不会关闭自由变量(如x
)并将它们与 lambda 一起序列化。所以在我的例子中......
...字符串输出不包含x
. 是否有考虑到这一点的解决方案,也许是通过序列化符号表?你可以在 Ruby 中访问它吗?
编辑 2:我更新了我的答案以包含序列化局部变量。这似乎可以接受。
ruby - 为什么这段代码在 Proc.call 之后会产生 nil?
什么原因导致零?
ruby - ArgumentError 调用 Proc
当我尝试调用上面的过程时,我得到:
我的期望是,如果方法是用这种类型的签名定义的,我可以将 proc 传递给方法:
然后我可以像这样执行proc insiide foo:
ruby - 如何将两个参数传递给具有单参数签名的方法?
怎么one_arg
知道&s
?
ruby - 为什么显式返回会对 Proc 产生影响?
我认为关键字在 Ruby 中是可选的,并且无论您是否请求它return
,您总是会选择它。return
鉴于此,我发现令人惊讶的是,foo
并且具有不同的输出是由包含显式inbar
的事实决定的。foo
return
Proc f
有谁知道为什么会这样?
ruby - 对 Ruby 中的 procs 和 lambdas 有什么“简单”的解释吗?
对 Ruby 中的 procs 和 lambdas 有什么“简单”的解释吗?
tcl - 如何打印出 tcl proc?
给定一个简单的 tcl proc
我可以使用什么 tcl 命令来打印出程序foo
……也就是说,我想要返回 proc的文本……
例如:
我怎么foo {a b} {puts "$a $b"}
回来?
ruby - 在 Ruby 块中使用“返回”
我正在尝试将 Ruby 1.9.1 用于嵌入式脚本语言,以便将“最终用户”代码编写在 Ruby 块中。这样做的一个问题是我希望用户能够在块中使用“return”关键字,因此他们不需要担心隐式返回值。考虑到这一点,这是我想做的事情:
如果我在上面的例子中使用'return',我会得到一个 LocalJumpError。我知道这是因为有问题的块是 Proc 而不是 lambda。如果我删除'return',代码就可以工作,但我真的更希望能够在这种情况下使用'return'。这可能吗?我尝试将块转换为 lambda,但结果是一样的。