गहरे लाल रंग का एक हैश बनाने liners के

20 अगस्त, 2009 के द्वारा प्रशांत
: के तहत दायर की प्रौद्योगिकी

कल जबकि मेरे पुराने कार्यक्रमों के माध्यम से जा रहा है, मैंने पाया कि यह कुछ समय पहले मेरे द्वारा लिखा:

#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 की तरह लग रहा है

 

, यह सही पेपैल भुगतान रसीद से काट दिया गया है.

रेखा से ऊपर अगर भागों में टूट बेहतर पढ़ता है:

  विभाजन unescaped_array = CGI.unescape (raw_text). ('और')
   unescaped_array = unescaped_array.collect {| x | ख = x.split ("="}); b.push (शून्य) b.size == 1 अगर;
   flattened_array = unescaped_array.flatten
   हैश = हैश [* flattened_array,] 

आईआरबी में अलग अलग चरणों:

  विभाजन 009:0> unescaped_array है = CGI.unescape (raw_text) ('और'): (मुख्य) IRB.    

 => ["सफलता", "mc_gross 10.00 =", "protection_eligibility = अयोग्य," payer_id = U7PPJJ4TSJ47E "," कर 0.00 = "," payment_date = 09:45:30 10 जुलाई, 2009 पीडीटी "," payment_status = लंबित "]                                                                         

 (मुख्य) IRB: 013:0> unescaped_array = unescaped_array.map {| x | ख = x.split ("="}); b.push (शून्य) b.size == 1 अगर;  

 => [["सफलता" शून्य, "mc_gross", "10.00"] ["protection_eligibility", "अयोग्य"] ["payer_id", "U7PPJJ4TSJ47E"] ["कर", "0.00"] ["payment_date", "09:45:30 10 जुलाई, 2009 पीडीटी"] ["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 पीडीटी 10 जुलाई, 2009 "," payment_status "," लंबित "]
 (मुख्य) IRB: 015:0>
 हैश = हैश [* flattened_array,]
 => {"कर" => "0.00", "payment_status" => "लंबित", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10.00", "सफलता" => शून्य, "payment_date = > "09:45:30 10 जुलाई, 2009 पीडीटी", "protection_eligibility" => "अयोग्य"} 

Btw, * माणिक में सूचक ऑपरेटर कहा जाता है

जोड़े की सरणी 'से हैश बनाने के लिए एक और रास्ता इंजेक्षन उपयोग करने के लिए है:

  हैश = [1,2 [], [3,4] इंजेक्षन ({}). {| परिणाम, तत्व | परिणाम [element.first] = परिणाम [element.last]; परिणाम} 

वहाँ एक और तरीका है :) एक पाश लिखें, कि मैं पाठकों के लिए एक व्यायाम के रूप में छोड़ दूँगा!

यहाँ एक बिट arrays से हैश बनाने के असंबंधित उपयोग के मामले है:

  (मुख्य) IRB: 005:0> [1,2,3,4,7,9] group_by {| x | x 5 <?  : कम :: अधिक}

 => {: कम => [1, 2, 3, 4]: बड़ा => [7, 9]} 

आप अधिक बातें करते हैं, मूल रूप से ब्लॉक के परिणाम के रूप में प्रयोग किया जाता है जिसके परिणामस्वरूप हैश में उस तत्व के लिए कुंजी हो सकता है.

टिप्पणियाँ

    ब्लॉग टिप्पणियों Disqus द्वारा संचालित