【问题标题】:How to pass a string var into Hash#rassoc?如何将字符串 var 传递给 Hash#rassoc?
【发布时间】:2013-03-08 19:04:02
【问题描述】:

我正在尝试按值获取键,但想设置请求动态抛出字符串变量。

presidents = { 1 => "Washington", 2 => "Adams", 3 => "Jefferson" }

request1 = gets
request2 = "Adams"

puts presidents.rassoc(request1).first # doesn't work
puts presidents.rassoc(request2).first # work perfect

第二种方法报错,当我输入“Adams”并回车时:

test.rb:6:in `<main>': undefined method `first' for nil:NilClass (NoMethodError)

我还检查了 request1request2 类 - 两者都是 String

看了rassoc的描述,还是不明白为什么第二个不行。

【问题讨论】:

    标签: ruby hash ruby-1.9.3


    【解决方案1】:

    你错过了gets

    # If the user types 'Washington'
    gets       #=> "Washington\n"
    gets.chomp #=> "Washington"
    

    【讨论】:

    • @ramilmuratov 始终检查您的数据,看看您所做的假设是否正确 :)
    • @DaveNewton 谢谢,但有些数据是隐含的,尤其是对于初学者:)
    • @RamilMuratov 数据从不“隐含”;如果使用非代码工件的东西不起作用,调试的主要规则之一是检查您的输入。在基于数据存储/检索时尤其如此。
    猜你喜欢
    • 2015-05-23
    • 2018-09-02
    • 2016-10-25
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多