روبي 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 يبدو
، أليس كذلك تم قطع عليه من اعتراف الدفع باي بال.
فوق خط إذا كسر في أجزاء يقرأ على نحو أفضل:
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) سبليت ('&') => ["نجاح"، "mc_gross = 10.00"، "protection_eligibility = غير مؤهل"، "payer_id = U7PPJJ4TSJ47E"، "ضريبة = 0.00"، "payment_date 09:45:30 = 10 يوليو 2009 PDT"، "payment_status = بانتظار "] الاتحاد الدولي للرجبي (الرئيسي): 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 PDT"]، ["payment_status"، "معلق".]] الاتحاد الدولي للرجبي (الرئيسي): 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 "،" معلق "] الاتحاد الدولي للرجبي (الرئيسي): 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]؛ نتيجة} هناك أكثر من طريقة
كتابة حلقة، الذي سأترك باعتبارها ممارسة للقراء!
هنا قليلا حالة الاستخدام لا علاقة لها من خلق التجزئة من المصفوفات:
الاتحاد الدولي للرجبي (الرئيسي): 005:0> [1،2،3،4،7،9] group_by {| X | X <5.؟ : أقل :: أكبر} => {: أقل => [1، 2، 3، 4]،: أكبر => [7، 9]}
يمكنك أن تفعل المزيد من الأشياء، ويستخدم أساسا نتيجة للكتلة كمفتاح لهذا العنصر في التجزئة الناتجة عن ذلك.



































