0
쿼리를 해시로 구문 분석하는 방법이 있습니다.Ruby에서 해시를 사용하는 이상한 동작
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 메모리에 동일한 주소 해시있는 점? –