gpt4 book ai didi

ruby - 来自方法的真实过程

转载 作者:数据小太阳 更新时间:2023-10-29 08:39:43 26 4
gpt4 key购买 nike

有没有办法从 Ruby 中的方法中获取真正的 proc

通过 instance_method 获得的 UnboundMethod 不符合要求,因为我只能将它绑定(bind)到声明该方法的类的对象。我无法像在 proc 中那样(使用 instance_exec)在方法体内重新解释 self

同样,通过method获取的Method也是不行的,因为self绑定(bind)到method的接收者> 我无法更改它。

编辑(澄清):

我想做的是采用一个类中定义的方法并将其转移到另一个类中。这意味着我需要能够在方法中重新解释 self 的含义。对于 proc,这可以通过 instance_execinstance_eval 实现,但不能用于方法。

为什么我要尝试将方法从一个类转移到另一个类?长话短说,实现一种命名空间形式,因为我最不满意 Ruby 提供的可见性控制(无法将模块成员隐藏到包含类)。然而,这远远超出了这个问题的范围。

最佳答案

也许 Method 中的 to_proc 可以帮助您:

class A
def test
puts 'this is a test'
end
end

m = A.new.method(:test)

m.to_proc.call #=> this is a test

更新:只是一个想法

通过使用 sourcify gem 将 proc 从第一个对象转换为源,然后在第二个对象的上下文中对其进行评估

关于ruby - 来自方法的真实过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12316488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com