无法调用在父作用域中分配的局部变量

Sla*_*ava 1 ruby scope local-variables

blah = 10
def what?
  "#{blah}"
end
puts what?
# =>
# NameError: undefined local variable or method `blah' for main:Object
#     from (irb):3:in `what?'
#     from (irb):5
#     from E:/RailsInstaller/Ruby1.9.3/bin/irb:12:in `<main>`
Run Code Online (Sandbox Code Playgroud)

为什么?正确的写法是什么?我应该在局部范围内复制一个变量还是有更好的变体?

小智 5

您需要在这里定义实例变量或方法:

@blah = 10
def what?
  "#{@blah}"
end
Run Code Online (Sandbox Code Playgroud)

或者像这样:

def blah
  10
end

def what?
  "#{blah}"
end
Run Code Online (Sandbox Code Playgroud)