访问方法内的局部变量

时间:2012-01-15 11:44:05

标签: ruby

以下是我想要做的示例代码..

debug = false
debug_file = "debug.txt"
terminate_tool

def terminate_tool
  info_string = "Terminating tool execution ...\n"
  print info_string
  File.open(debug_file, "a") { |file| file.print info_string } if debug
end

在这里,我如何访问方法内部的变量以及如何声明方法的原型,因为我希望它的定义在最后写入?

1 个答案:

答案 0 :(得分:0)

您可以使用实例变量在方法外部使用变量。

def terminate_tool
  p @debug_file # "debug.txt"
end

@debug_file = "debug.txt"    
terminate_tool

我建议将其传递给方法。

def terminate_tool(debug_file)
  p debug_file # "debug.txt"
end

terminate_tool("debug.txt")

我不确定你的最终目标是什么给你的最小代码样本。但是阅读关于过程,块和lambdas可能会有所帮助。 http://innig.net/software/ruby/closures-in-ruby.html

另外,实例变量不会传递给类的实例。

def terminate_tool
  p @debug_file # "debug.txt"
end

class A
  def foo
    p @debug_file # nil
  end
end

@debug_file = "debug.txt"
terminate_tool

a = A.new
a.foo