یک متد در روبی بنویسید که یک آرایه از اعداد را بگیرد و با استفاده از 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 }) تا کد خواناتر و تابعی بماند.

توسط پژوهشگر در 201 روز قبل ساعت 03:35
دسته بندی ها: Ruby Ruby for beginner
arash در 201 روز قبل ساعت 05:58

این رویکرد با استفاده از Enumerable#select و Enumerable#map کد خوانایی خوبی دارد و خروجی را در آرایه‌ای جدید می‌آورد بدون تغییر در آرایهٔ اصلی. برای آرایه‌های بسیار بزرگ، می‌توانید از lazy استفاده کنید تا از ایجاد درخت‌های میانی جلوگیری شود: array.lazy.select(&:even?).map { |n| n * 2 }.to_a. توجه کنید که even? فقط روی Integers کار می‌کند؛ اگر احتمال وجود مقادیر غیر عددی را دارید، قبل از فیلتر بررسی کنید که مقدار یک Integer است. همچنین اگر هدف تغییرناپذیری است، از map به جای map! استفاده کنید تا آرایهٔ اصلی دست‌نخورده باقی بماند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری