在python中,我可以使用"callable"来检查是否可以调用变量.像这样:
# -*- coding: utf-8 -*-
def test():
print "hello world"
a = test
if callable(a):
a()
Run Code Online (Sandbox Code Playgroud)
所以这样,我可以说a是一个函数,而不是一个实例变量.但是在ruby中,大括号可以省略,所以对我来说,当我调用它时,我无法判断它是函数还是实例变量.是否有一些方法可以在运行时检查变量是函数还是实例变量?
是.defined?给你什么叫做.
a = 1
def a; end
b = 1
def c; end
defined? a # => "local-variable"
defined? a() # => "method"
defined? b # => "local-variable"
defined? c # => "method"
Run Code Online (Sandbox Code Playgroud)