gpt4 book ai didi

ruby - 发送允许访问私有(private)变量

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:25 25 4
gpt4 key购买 nike

考虑以下代码:

def create_class(class_name, superclass, &block)
klass = Class.new superclass, &block
Object.const_set class_name, klass
end

在我这样做之后:

create_class('User', ActiveRecord::Base)

以下是可以的:

Object.send(:remove_const, :User)

但是这个:

Object.remove_const :User

结果:

NoMethodError: private method `remove_const' called for Object:Class

?对我来说没有意义......“发送”可以覆盖 Ruby 的访问检查吗?请帮忙!

最佳答案

看起来它确实覆盖了 Ruby 的访问检查。

http://joshstaiger.org/archives/2006/12/the_ruby_send_h.html

我的猜测是您希望与其他人保密的东西玩得开心。如果你需要使用 send 来调用你没有创建的类的方法,你应该调用 obj.respond_to

关于ruby - 发送允许访问私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1177473/

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