Có cách nào để làm phẳng một băm thành một chuỗi, với các dấu phân cách tùy chọn giữa các khóa và giá trị, và các cặp khóa/giá trị không?Làm phẳng băm thành chuỗi trong Ruby
Ví dụ, print {:a => :b, :c => :d}.flatten('=','&')
nên in a=b&c=d
tôi đã viết một số mã để làm điều này, nhưng tôi đã tự hỏi nếu có một cách gọn gàng:
class Hash
def flatten(keyvaldelimiter, entrydelimiter)
string = ""
self.each do
|key, value|
key = "#{entrydelimiter}#{key}" if string != "" #nasty hack
string += "#{key}#{keyvaldelimiter}#{value}"
end
return string
end
end
print {:a => :b, :c => :d}.flatten('=','&') #=> 'c=d&a=b'
Cảm ơn
Bạn có thể đơn giản hóa việc này hơn nữa. Xem câu trả lời của tôi để biết chi tiết. Gist sẽ thay thế '| k, v |' bằng '| e |' làm cho 'e' thành mảng mà bạn có thể gọi là' e.join ('=') '. –
làm thế nào để làm ngược lại để có được một băm – jenuine