紅寶石1層,創建哈希
昨天,同時通過我的老節目之一,我發現我寫的一段時間回來:
#begin magic
hash=Hash[*CGI.unescape(raw_text).split('&').map{|x| b=x.split("=");b.push(nil) if b.size==1;b}.flatten]
#end magic
殺一些懸念,讓我透露,raw_text看起來像
,權利,它已被切斷,從Paypal付款確認。
如果在零件壞了上面的行讀取更好:
unescaped_array CGI.unescape(raw_text)。分裂('&') = unescaped_array unescaped_array.collect {| X | B = x.split(“=”); b.push(零)如果b.size == 1;} flattened_array = unescaped_array.flatten 哈希散列[* flattened_array]
讓我們做在irb中的各個步驟:
IRB(主):009:0> unescaped_array = CGI.unescape(raw_text)分裂('&') => [“僑”,“mc_gross = 10.00”,“protection_eligibility =不合格”,“payer_id = U7PPJJ4TSJ47E”,“稅= 0.00”,“payment_date = 9點45分30秒2009年07月10日,PDT”,“PAYMENT_STATUS =待定“] IRB(主):013:0> unescaped_array = unescaped_array.map {| X | B = x.split(“=”); b.push(零)如果b.size == 1;} => [“僑”,無],[的“mc_gross”,“10.00”],[“protection_eligibility”,“不合格”,“payer_id”,“U7PPJJ4TSJ47E”],[“稅收”,“0.00”] [“payment_date”,“9點45分30秒7月10日,2009 PDT”],[“PAYMENT_STATUS”,“待定”。]] IRB(主):014:0> flattened_array = unescaped_array.flatten =>“成功”,無“mc_gross”,“10.00”,“protection_eligibility”,“不合格”,“payer_id”,“U7PPJJ4TSJ47E”,“稅法”,“0.00”,“payment_date”,“09:45: 30日2009年07月10日,PDT“,”PAYMENT_STATUS“,”待定“] IRB(主):015:0> 哈希散列[* flattened_array] => {“稅”=>“0.00”,“PAYMENT_STATUS”=>“掛起”,“payer_id”=>“U7PPJJ4TSJ47E”,“mc_gross”=>“10.00”,“成功”=>“零”payment_date“= “九時45分三十秒07月10,2009 PDT”,“protection_eligibility”=>“不合格”}
順便說一句,*被稱為紅寶石的圖示操作員
從“對數組的哈希創建的另一種方法是使用注:
哈希= [1,2],[3,4]注入({})。{|結果,元素|結果element.first] =結果[element.last];結果} 有一個方法
寫一個循環,我會留給讀者作為練習!
這裡是位從陣列創建哈希無關的使用情況:
IRB(主):005:0> [1,2,3,4,7,9] GROUP_BY {| X | X <5? 更低::更大} => {:較小的=> [1,2,3,4]:更大=> [7,9]}
你可以做更多的事情,基本上塊的結果作為使用中產生的哈希元素的關鍵。



































