假设我有一个包含两种方法的 ABC 类。
class ABC
def test
"test"
end
def display_test
puts test
end
end
我只希望能够从我的控制台 (IRB) 调用 ABC.new.display_test
(返回我的“test”)而不能调用 ABC.new.test
或 ABC.new.send(:test)
就此而言。这可能吗?如果是,怎么办?
最佳答案
最彻底的方法是使用 test
私有(private)和覆盖send
专门阻止对 test
的调用的方法:
class ABC
def test
"test"
end
private :test
def display_test
puts test
end
def send(id)
if id == :test
raise NoMethodError.new("error")
else
super(id)
end
end
alias_method :__send__, :send
end
请注意这个send
override 不合适,因为它只接受一个参数。
如果方法正确,将有可能做这样的事情:
ABC.new.send(:send, :test)
关于ruby - 如何在控制台中调用ruby中的某个方法 'disable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639857/