Доступ к локальной переменной внутри метода - PullRequest
3 голосов
/ 15 января 2012

Ниже приведен пример кода, который я пытаюсь сделать ..

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 голосов
/ 15 января 2012

Вы можете использовать переменную вне метода, используя переменную экземпляра.

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")

Я не совсем уверен, какова ваша конечная цель с учетом вашего минимального примера кода. Однако чтение про проц, блоков и лямбд может помочь 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...