展开标题:如果实例变量尚未初始化,如何访问实例变量(@ivar)以导致异常?

最佳答案

但是,没有内置的方法提供与实例变量相关的功能;
因为在您的示例中Hash#[]类似于@ivar(或instance_variable_get(:@ivar)),所以Hash#fetch将类似于

def instance_variable_fetch(sym)
  raise(NameError, "instance variable not found: #{sym}") unless instance_variable_defined?(sym)
  instance_variable_get(sym)
end

例子:
@var = 42
instance_variable_fetch(:@var)
#=> 42
@ivar = nil
instance_variable_fetch(:@ivar)
#=> nil
instance_variable_fetch(:@other_var)
#=> NameError: instance variable not found: @other_var

关于ruby - hash [key]是hash.fetch(key),就像@ivar是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54296485/

10-12 05:14