2012-01-15 7 views
3

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

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 

Здесь, как я могу получить доступ к переменным вне метода внутри и как я могу объявить прототип метода потому что я хочу, чтобы его определение записывалось в конце?

ответ

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

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