gpt4 book ai didi

ruby - 使实例方法在运行时私有(private)

转载 作者:数据小太阳 更新时间:2023-10-29 07:09:42 24 4
gpt4 key购买 nike

在另一个对象中注册该对象后,我需要将一些实例方法设为私有(private)。

我不想卡住对象,因为它必须保持可编辑状态,只是功能较少。而且我不想取消定义这些方法,因为它们是在内部使用的。

我需要的是这样的:

class MyClass

def my_method
puts "Hello"
end

end

a = MyClass.new
b = MyClass.new

a.my_method #=> "Hello"
a.private_instance_method(:my_method)
a.my_method #=> NoMethodError
b.my_method #=> "Hello"

有什么想法吗?

最佳答案

您可以随时在方法名称上调用方法 private 以将其设为私有(private):

>> class A
>> def m
>> puts 'hello'
>> end
>> end
=> nil
>> a = A.new
=> #<A:0x527e90>
>> a.m
hello
=> nil
>> class A
>> private :m
>> end
=> A
>> a.m
NoMethodError: private method `m' called for #<A:0x527e90>
from (irb):227
from /usr/local/bin/irb19:12:in `<main>'

或者,从课外:

A.send :private, :m

关于ruby - 使实例方法在运行时私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171743/

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