ruby中如何调用与局部变量同名的私有方法
2014-10-31 15:35
453 查看
如果ruby中一个局部变量名和私有方法名同名的话,默认该名称被解释为变量而不是方法:
x=10;
def x;puts "what?" end
当你输入x实际不能执行x方法。解释器只把x解释为变量。而且undef只能对方法而不能对变量下手,所以undef x仍然不行,变量还在那里!一种解决方法是将x方法转换为一个method,然后调用:
x_f = method(:x)
x_f[]
或者还有一种方法,就是方法别名!你可以指定x的一个别名,这时x肯定会解释为方法:
alias new_x x
new_x
你当然可以吧方法转成method然后再转成proc,最后调用,不过这似乎多此一举鸟:
def call_x(&proc)
proc.call
end
call_x &x_f
哦鸟!ruby非常变通的,神马事都有几种解决方法。
x=10;
def x;puts "what?" end
当你输入x实际不能执行x方法。解释器只把x解释为变量。而且undef只能对方法而不能对变量下手,所以undef x仍然不行,变量还在那里!一种解决方法是将x方法转换为一个method,然后调用:
x_f = method(:x)
x_f[]
或者还有一种方法,就是方法别名!你可以指定x的一个别名,这时x肯定会解释为方法:
alias new_x x
new_x
你当然可以吧方法转成method然后再转成proc,最后调用,不过这似乎多此一举鸟:
def call_x(&proc)
proc.call
end
call_x &x_f
哦鸟!ruby非常变通的,神马事都有几种解决方法。
相关文章推荐
- ruby中如何调用与局部变量同名的私有方法
- ruby中如何调用与局部变量同名的私有方法
- 通过反射,如何操作私有成员变量(取/赋值),如何调用私有方法?
- 如何通过方法调用交换两个变量的值
- java 向上转型之后调用子类的同名变量/方法的问题(多态)
- 如何通过方法调用交换两个变量的值
- powermock如何阻止静态代码块和调用私有方法
- java,成员变量与方法参数或自定义的局部变量同名要用this,system.out.println(this)用法,
- 局部对象变量调用分线程方法
- 如何在Python中调用父类的同名方法
- Ruby如何实现动态方法调用?
- 反射(四)使用反射机制调用对象的私有方法及成员变量
- [zz]如何在Python中调用父类的同名方法
- Ruby如何实现动态方法调用?
- 如何防止私有方法被反射调用?
- [zz]如何在Python中调用父类的同名方法
- 单元测试时如何设定私有变量、调用私有成员函数
- java利用反射来调用一个类的私有方法和成员变量
- JS中子类中如何调用父类的同名方法(继承时候,父类的同名方法被覆盖了)
- 果局部变量与实例变量同名,那么如何在局部变量的作用域内引用实例变量?