0
我有一个方法,试图解析一个查询到哈希。奇怪的行为与哈希在红宝石
CONTACT_SEARCH_FIELDS = ['LastUpdate','Name','RecAdd','PhoneNumber','Tag_Group','FirstName','LastName','FamilyName','FamilyHead','ClientStatus','ContactType','ClientSource','TaxId']
CONTACT_SEARCH_OPERANDS = ['=','>','<','!=','Like','BeginsWith','IsEmpty']
def search (query, page = 1)
body = [{}]*query.length
query.each_with_index do |expr, i|
body[i]["Field"] = CONTACT_SEARCH_FIELDS.index expr[0]
body[i]["Operand"] = CONTACT_SEARCH_OPERANDS.index expr[1]
body[i]["Value"] = expr[2]
end
return body
end
的方法被称为像这样
search([["FirstName", "=", "John"], ["LastName", "=", "Smith"]])
的问题是,运行此给出了一个非常奇怪的输出。
search([["FirstName", "=", "John"], ["LastName", "=", "Smith"]])
=> [{"Operand"=>0, "Value"=>"Smith", "Field"=>6}, {"Operand"=>0, "Value"=>"Smith", "Field"=>6}]
我做了一些调试,问题是数组中的所有散列在每次迭代时都被设置。
我不明白这背后的原因是什么。我也欢迎此代码的任何更短或更好的版本。
是否第一定义创建n个哈希值,其指向在存储器中的相同地址? –