如何通过符号判断Ruby实例变量是否已定义?
检查符号指向的实例变量是否存在的替代方案
直接用Ruby内置的instance_variable_defined?方法就能解决,完全不需要依赖eval,安全又直观。
- 这个方法接受
:@xxx格式的Symbol参数,返回布尔值:实例变量存在时返回true,不存在则返回false - 完美适配你「先验证存在性再调用
remove_instance_variable」的场景
举个实际使用的例子:
# 定义一个实例变量 @some_variable = "test" # 检查存在性 instance_variable_defined?(:@some_variable) # => true instance_variable_defined?(:@non_existent_var) # => false # 结合remove_instance_variable的用法 target_var = :@some_variable if instance_variable_defined?(target_var) remove_instance_variable(target_var) end
这个方法是Ruby标准库原生提供的,所有对象都能调用,彻底规避了eval带来的维护风险和潜在安全问题。
内容的提问来源于stack exchange,提问作者iconoclast
相关产品推荐
相关产品推荐

