hash [key]是hash.fetch(key),因为@ivar是什么?

Sim*_*obi 2 ruby instance-variables

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

eng*_*nky 5

但是,没有内置方法为实例变量提供此功能;

因为在你的例子中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 
Run Code Online (Sandbox Code Playgroud)

例:

@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
Run Code Online (Sandbox Code Playgroud)