代码之家  ›  专栏  ›  技术社区  ›  Adam Taylor

Ruby哈希有问题

  •  0
  • Adam Taylor  · 技术社区  · 14 年前

    我正在使用watir和ruby尝试将Web应用程序中的数据加载到哈希中:

    def getOrders( )
    
        return orders = slurpOrders()
    
    end
    
    def containsOrderNumber( orderNumber )
        puts orderNumber 
        orders = getOrders
        puts orders[orderNumber]
        #puts orders.keys
    
        puts "orders has_key? = " + orders.has_key?(orderNumber).to_s
        return orders.has_key?(orderNumber)
    
    end
    
    private
    def slurpOrders( ) 
    
        puts @browser.tables[6].row_count
    
        rows = @browser.tables[6].rows
    
        orders = Hash.new
    
        for row in rows do
            #puts row.column_count
            if row.column_count == 8 then
                order = {
                    :sales_channel => row[2],
                    :customer => row[3],
                    :country => row[4],
                    :total => row[5],
                    :time => row[6],
                    :highlight => row[7],
                    :credit_hold => row[8],
                }
                orders[ row[1] ] = order
    
                #puts row[1]
    
            end
        end
    
        return orders
    
    end
    

    所以我在另一个脚本中调用containsordernumber(“1136050”),但orders.has撊key?返回false,orders[ordernumber]返回nil。

    但是,如果取消对puts orders.keys的注释,它将显示为哈希中的一个键…?我很困惑-我做错了什么?有什么奇怪的事情发生在数据类型上吗?

    干杯

    2 回复  |  直到 14 年前
        1
  •  2
  •   mb14    14 年前

        2
  •  2
  •   Andrew Grimm atk    14 年前

    puts orders.keys
    

    puts orders.keys.inspect
    

    inspect

    hash = {"1" => :string, 2 => :integer}
    puts hash.keys # Outputs 1(newline)2(newline)
    puts hash.keys.inspect # Outputs ["1", 2](newline)