یک متد در روبی بنویسید که یک آرایه از اعداد را بگیرد و با استفاده از Iteratorها فقط اعداد زوج را انتخاب کرده و هر کدام را در 2 ضرب کند و آرایهٔ جدید را بازگرداند.
8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:35 0.0
برای حل این مسئله از متدهای موجود در ماژول Enumerable مثل select (یا find_all) و map استفاده کنید؛ ابتدا با select اعداد زوج را فیلتر کنید (مثلاً array.select(&:even?)) و سپس با map هر عنصر را در 2 ضرب کنید. نکته: میتوان این دو مرحله را به صورت چینشده نوشت (array.select(&:even?).map { |n| n * 2 }) تا کد خواناتر و تابعی بماند.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این رویکرد با استفاده از Enumerable#select و Enumerable#map کد خوانایی خوبی دارد و خروجی را در آرایهای جدید میآورد بدون تغییر در آرایهٔ اصلی. برای آرایههای بسیار بزرگ، میتوانید از lazy استفاده کنید تا از ایجاد درختهای میانی جلوگیری شود: array.lazy.select(&:even?).map { |n| n * 2 }.to_a. توجه کنید که even? فقط روی Integers کار میکند؛ اگر احتمال وجود مقادیر غیر عددی را دارید، قبل از فیلتر بررسی کنید که مقدار یک Integer است. همچنین اگر هدف تغییرناپذیری است، از map به جای map! استفاده کنید تا آرایهٔ اصلی دستنخورده باقی بماند.
گزارش