ruby中如何调用与局部变量同名的私有方法

    如果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)