Как определить переменную вне метода, которая присутствует внутри метода? - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь создать метод, который позволяет мне запрашивать SQL в ruby ​​без ввода results = client.query('code') для каждого запроса.Вот мой текущий метод, но он говорит, что результаты не определены в моем заявлении пут.Когда я не использую свой метод, он работает нормально.

require "mysql2" 
client = Mysql2::Client.new(:username => 'buck19j')


def sql(code)
   client = Mysql2::Client.new(:username => 'buck19j')
   results = client.query(code)
end

sql('SHOW DATABASES')
puts(results.to_a)

Как определить переменную вне метода, которая присутствует внутри метода?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

results не «выходит» из метода sql, потому что является локальной переменной.Подход может состоять в том, чтобы определить ее как переменную экземпляра, и вы можете использовать ее тогда, как вы делаете с puts (все еще неясно, каков весь контекст этого).

def sql(code) 
  client = Mysql2::Client.new(:username => 'buck19j')
  @results = client.query(code)
end

sql('SHOW DATABASES')
puts(@results.to_a)

Другой способ - просто оставитьфункция возвращает значение client.query(code):

def sql(code) 
  client = Mysql2::Client.new(:username => 'buck19j')
  client.query(code)
end

puts(sql('SHOW DATABASES').to_a)
0 голосов
/ 21 мая 2018

Сделать метод вернуть значение, а не назначить это:

def sql(code)
   client = Mysql2::Client.new(:username => 'buck19j')
   client.query(code)
end

Затем назначить переменную при вызове метода:

results = sql('SHOW DATABASES')
puts(results.to_a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...