روبي one المتشددين لإنشاء التجزئة
بالأمس وجدت في حين يمر بي أحد البرامج القديمة ، وهذا الذي كتبه لي عودة في وقت ما :
#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.split ("=")؛b.push (لا شيء) إذا b.size == 1 ، ب} flattened_array = unescaped_array.flatten هاش هاش = [* flattened_array]
دعونا نفعل الخطوات الفردية في مجلس الهجرة واللاجئين :
IRB (الرئيسي) : 009:0> unescaped_array = CGI.unescape (raw_text) تقسيم ('&') => ["نجاح" ، "mc_gross = 10،00" ، "غير مؤهل protection_eligibility =" ، "payer_id = U7PPJJ4TSJ47E" ، "الضريبة = 0.00" ، "09:45:30 payment_date = 10 يوليو 2009 PDT" ، "ريثما payment_status = "] IRB (الرئيسي) : 013:0> unescaped_array unescaped_array.map = {| س | ب = 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 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 10 يوليو 2009 PDT "،" 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 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]}
يمكنك أن تفعل أشياء أكثر ، ويستخدم أساسا نتيجة للكتلة كمفتاح لهذا العنصر في التجزئة الناتجة عن ذلك.



































