Saya memiliki hash seperti
{:key1 => "value1", :key2 => "value2"}
Dan saya memiliki variabel k
yang akan memiliki nilai sebagai 'key1'
atau 'key2'
.
Saya ingin mendapatkan nilai k
ke dalam variabel v
.
Apakah ada cara untuk mencapai hal ini tanpa menggunakan if
atau case
? Solusi satu baris lebih disukai. Mohon bantuannya.
Mengkonversi kunci dari string ke simbol, dan melakukan pencarian di hash.
hash = {:key1 => "value1", :key2 => "value2"}
k = 'key1'
hash[k.to_sym] # or iow, hash[:key1], which will return "value1"
Rails menggunakan kelas yang disebut HashWithIndifferentAccess
yang terbukti sangat berguna dalam kasus seperti itu. Saya tahu bahwa Anda hanya menandai pertanyaan Anda dengan Ruby, tetapi Anda dapat mencuri implementasi kelas ini dari sumber Rails untuk menghindari konversi string ke simbol dan simbol ke string di seluruh basis kode Anda. Kelas ini membuat nilai dapat diakses dengan menggunakan simbol atau string sebagai kunci.
hash = HashWithIndifferentAccess.new({:key1 => "value1", :key2 => "value2"})
hash[:key1] # "value1"
hash['key1'] # "value1"