我不太清楚运营商defined?
。
例如:
defined? var
为什么不:
defined? :var defined? 'var' ## i think these two ways maybe make more sense
但是这个运算符也可以跟一个表达式。
这个算子在什么阶段执行?在编译阶段,类似于sizeof(int)
C?
我不太清楚运营商defined?
。
例如:
defined? var
为什么不:
defined? :var defined? 'var' ## i think these two ways maybe make more sense
但是这个运算符也可以跟一个表达式。
这个算子在什么阶段执行?在编译阶段,类似于sizeof(int)
C?
在不同的上下文中,您希望在不同的扩展级别上检查事物。defined?
用于检查逐字表达。如果您使用defined? :var
or defined? "var"
,它们将始终给出真实值,因为:var
and"var"
是有效的 Ruby 表达式(符号和字符串)。
如果要检查表达式的一级扩展,则有特定的方法。在这种情况下,如果你想检查这种方法是否存在,你可以做respond_to? :var
or respond_to? "var"
。如果你想检查这样的变量是否存在,那么你可以做local_variables.key?(:var)
.
此外,defined?
不仅仅用于检查单个令牌。它也用于检查复杂的表达式,如[1, 2, 3].each{|x| puts x}
. 如果你必须用符号来表达那将是不方便的。
defined?
,它的论点不被评估;它只是被解析。它的行为就好像它正在占用一个块。RDoc说:请注意,表达式未执行。我无法回答这是如何完成的。