ali_agha نشر 25 نوفمبر 2015 أرسل تقرير نشر 25 نوفمبر 2015 هل هنالك فروقات بين استخدام each وmap لأنني جرب استخدام كلتا حلقتي التكرار على نفس المصفوفة لكنني في النهاية حصلت على نتيجتين مختلفتين كما تظهر في هذا المثال:hash = { "d" => [11, 22], "f" => [33, 44, 55] } # case 1 hash.map {|k,vs| vs.map {|v| "#{k}:#{v}"}}.join(",") => "d:11,d:22,f:33,f:44,f:55" # case 2 hash.map {|k,vs| vs.each {|v| "#{k}:#{v}"}}.join(",") => "11,22,33,44,55"فما هي المشكلة؟ اقتباس
0 هشام رزق الله نشر 25 نوفمبر 2015 أرسل تقرير نشر 25 نوفمبر 2015 الفرق هو أن حلقة each تنفذ الكتلة المُقدمة لكل عنصر من المصفوفة ومن ثم ترجع المصفوفة نفسها.أما map فهي تنفذ الكتلة المُقدمة لكل عنصر من المصفوفة أيضًا لكنها ترجع مصفوفة جديدة بالقيم الجديدة التي تم إرجاعها بعد تنفيذ الكتلة (block).فعلى سبيل المثال لنفترض أن لدينا المصفوفة التالي:arr = ["tokyo", "london", "rio"] عندما ننفذ عليها حلقة each ستكون النتيجة كالتالي:arr.each { |element| element.capitalize } # => ["tokyo", "london", "rio"] نلاحظ أن النتيجة هي نفس المصفوفة على الرغم من تنفيذ الشيفرة البرمجية الموجود داخل كتلة each لكن القيم التي تغيرت لم يتم إرجاعها.لاحظ أنه عندما نعمل نفس الشيء مع map فسيتم إرجاع مصفوفة بالتغييرات التي أردناها:arr.map { |element| element.capitalize } # => ["Tokyo", "London", "Rio"] 1 اقتباس
السؤال
ali_agha
هل هنالك فروقات بين استخدام each وmap لأنني جرب استخدام كلتا حلقتي التكرار على نفس المصفوفة لكنني في النهاية حصلت على نتيجتين مختلفتين كما تظهر في هذا المثال:
فما هي المشكلة؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.