相关疑难解决方法(0)

我可以使用Ruby从内部引用lambda吗?

我希望能够使用Ruby从内部调用匿名lambda.考虑以下递归块(返回阶乘).我知道我可以将它分配给变量,并且该变量在lambda的范围内:

fac = lambda { |n| n == 1 ? 1 : n * fac.call(n - 1) }
fac.call(5)
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够做到以下(因为没有实际原因,我只是对探索语言感兴趣):

(lambda { |n| n == 1 ? 1 : n * self.call(n - 1) }).call(5)
Run Code Online (Sandbox Code Playgroud)

我知道self是行不通的,因为是main对象.我做错了吗?我试图做一些不可能的事情 - 如果不是,这是因为某些理论上的限制还是仅仅是在Ruby中没有实现?

ruby lambda block

20
推荐指数
3
解决办法
3837
查看次数

标签 统计

block ×1

lambda ×1

ruby ×1