我是否可以调用一个方法,如果字符串是有效的变量名则返回true,否则返回false?
我注意到instance_variable_get在内部使用了rb_is_instance_id,但是我找不到那个公开的方法来调用。
答案 0 :(得分:2)
我不确定你在说什么类型的变量。此函数将告诉您字符串是否是有效的实例变量名称。 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
答案 1 :(得分:1)
!!(defined?(string).to_s =~ /variable/)