您的位置:首页 > 编程语言 > Ruby

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非常变通的,神马事都有几种解决方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: