我尝试创建一种方法,允许我在ruby中查询SQL而不为每个查询键入results = client.query('code')
。这是我当前的方法,但它说我的puts语句中的结果是未定义的。当我不使用我的方法时,它会正常工作。
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)
如何定义方法中存在的变量外部方法?
答案 0 :(得分:2)
使方法返回值,而不是分配:
def sql(code)
client = Mysql2::Client.new(:username => 'buck19j')
client.query(code)
end
然后在调用方法时分配变量:
results = sql('SHOW DATABASES')
puts(results.to_a)
答案 1 :(得分:2)
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)