level 1
用参数传变量,或返回值是变量的方法是正常,但我想做到的是直接用参数调用方法,其结果往往是直接就执行调用的方法了,这不是我要的结果
例:
def aa
print "123"
end
def bb(ss)
aaa=gets
ss
end
bb(aa)
我想实现的效果是这样的:
def bb
aaa=gets
print "123"
end
这在实际应用方面能节省大量的代码,请问这应该怎么实现 ???
2017年05月04日 12点05分
1
level 11
在Ruby里写一个方法名,不管后面有没有括号和参数列表,永远都代表调用该方法,而不会代表方法本身。
比如你写一个 ss,不管这个 ss 在代码中的什么位置,那么和写 ss() 是完全一样的。
C++或者Python里方法名自身就是代表该方法的指针/引用,但是在 Ruby 里永远不会代表引用。就获取引用需要用 Object#method,然后以 symbol 的形式传入方法名。Object#method方法 返回 Method 对象,要调用方法时只要调用该 Method 对象的 call 方法即可。
所以你的代码可以改成:
def aa
print "123"
end
def bb(ss)
aaa=gets
ss.call
end
bb(method(:aa))
2017年05月10日 07点05分
3
原来是这样,真是非常感谢
2017年05月11日 12点05分