如何在控制台中调用ruby中的某个方法
发布时间:2020-12-17 03:40:53 所属栏目:百科 来源:网络整理
导读:假设我有两种方法的ABC类. class ABC def test "test" end def display_test puts test endend 我只希望能够从我的控制台(IRB)调用ABC.new.display_test(返回’test’)并且无法调用ABC.new.test或ABC.new.send(:test) .这可能吗?如果是这样,怎么样? 解决
假设我有两种方法的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) .这可能吗?如果是这样,怎么样? 解决方法
最彻底的方法是将测试私有并覆盖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 请注意,此发送覆盖不合适,因为它只接受单个参数. 如果以正确的方式完成,就可以做到这样的事情: ABC.new.send(:send,:test) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |