如果字符串是有效的变量名,有没有一个方法我可以调用,它会返回true,否则会返回false?
我注意到instance_variable_get在内部使用rb_is_instance_id,但我找不到可供调用的方法。
我不确定你说的是什么类型的变量。此函数将告诉您字符串是否是有效的实例变量名。Ruby可能对不同类型的变量有不同的规则。
def valid_variable_name?(var_name)
Object.new.instance_variable_set ('@'+var_name).to_sym, nil
true
rescue NameError
false
end
puts valid_variable_name?('banana') # => true
puts valid_variable_name?("x00") # => false
puts valid_variable_name?('#') # => false
puts valid_variable_name?(':') # => false
puts valid_variable_name?('@') # => false
puts valid_variable_name?('/') # => false
!!(defined?(string).to_s =~ /variable/)