首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby变量返回[[“变量”]]

Ruby变量返回[[“变量”]]
EN

Stack Overflow用户
提问于 2014-04-15 00:54:23
回答 1查看 51关注 0票数 0

我正在尝试使用ruby从mysql获取变量,但是当我得到变量并使用puts在控制台中显示它时,它读取变量而没有引号等等,但是当我试图在其他地方调用变量(如username = "#{dev_test1}" )时,我得到了一个类似于这个[["variable called from database"]]的输出,我只想得到一个变量,我可以在一个没有[[""]]的字符串中使用它。下面是我使用的代码

代码语言:javascript
复制
require "mysql2"

    client = Mysql2::Client.new(:host => "localhost", :username => "root", :password => "", :database =>"test")
    test_query1 = client.query("SELECT test1 FROM accounts LIMIT 1").each(:as => :array)
    dev_test1 = test_query1.each { | row | }
    puts dev_test1
    test_query2 = client.query("SELECT test2 FROM accounts LIMIT 1").each(:as => :array)
    dev_test2 = test_query2.each { | row | }
    puts dev_test2
    username = "#{dev_test1}"
    password = "#{dev_test2}"
    puts username
    puts password
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 01:18:22

在您的代码中可以清理一些东西,但我将看看为什么您在终端和实际代码中得到了两个不同的答案。

在Ruby中,puts#{variable}不是一回事。如果传递了数组,puts实际上会通过去掉数组将值更改为可读的字符串。这就去掉了括号。

字符串插值(#{variable})相当于对变量调用.to_s。这将将数组转换为一个括号完整的字符串。因此,当您调用puts时,密码已保存为字符串,puts将显示为原样、括号和所有内容。

所以

代码语言:javascript
复制
password = "#{array}" #==> "[[array_contents]]"
puts password  #==> "[[array_contents]]"

鉴于

代码语言:javascript
复制
puts array  #==> "array_contents"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23072854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档