混雜鍵實際上沒有雙引號("
),你看到他們,因爲鍵是字符串和紅寶石將顯示所有串封閉雙引號之間;所以你將無法(也不需要)刪除它們。
你可以做的是使用的哈希鍵符號代替串的(這是相當多的Ruby最佳實踐)。
對於您既可以創建符號散,像這樣:
my_hash = {Fixnum: [1, 8], Hash: [{7=>"einzeln", 5=>[13]}]}
#=> {:Fixnum=>[1, 8], :Hash=>[{7=>"einzeln", 5=>[13]}]}
如果你有在哈希鍵無法控制,你可以將鑰匙轉換爲符號,像這樣的:
my_hash = {"Fixnum"=>[1, 8], "Hash"=>[{7=>"einzeln", 5=>[13]}]}
Hash[my_hash.map{ |k, v| [k.to_sym, v] }]
#=> {:Fixnum=>[1, 8], :Hash=>[{7=>"einzeln", 5=>[13]}]}
或者,如pointed out by mu is too short,你可以使用Fixnum
和Hash
類鑰匙,就像這樣:
my_hash = {Fixnum => [1, 8], Hash => [{7=>"einzeln", 5=>[13]}]}
#=> {Fixnum=>[1, 8], Hash=>[{7=>"einzeln", 5=>[13]}]}
同樣,如果你沒有在哈希鍵控制,可以按鍵轉換爲自己的班級,這樣:
my_hash = {"Fixnum"=>[1, 8], "Hash"=>[{7=>"einzeln", 5=>[13]}]}
Hash[my_hash.map{ |k, v| [eval(k.to_s), v] }]
#=> {Fixnum=>[1, 8], Hash=>[{7=>"einzeln", 5=>[13]}]}
保持請記住,只有在完全信任/控制傳遞給它的值時,才推薦使用eval
。
你從哪裏得到鑰匙?他們總是會成爲紅寶石課程嗎?你爲什麼要把你的密鑰從字符串轉換成類型? –
它的目的是什麼? –