+1 امتیاز
قبل در برنامه نویسی توسط (426 امتیاز)
ویرایش شده قبل توسط
public static void main(String[] args) {
    List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 0, 9);
    nums.forEach(myAction(it -> System.out.println(100 / it)));
  }
  public static Consumer<Integer> myAction(Consumer< Integer> consumer) {
    return i -> {
      try {
        consumer.accept(i);
      } catch (ArithmeticException e) {
        System.out.println(e.getMessage());
      }
    };
  }

این متد myaction در واقع یک lambda wrapper است که کد رو تمیز تر کنه یعنی جای که داریم از lambda استفاده مکنیم exception handling انجام ندیم و کده خوشگل تری داشته باشیم اما اون i دقبقا چی شد و از کجا اومده؟

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

متد myAction درون تابع forEach فراخوانی شده پس نوع بازگشتی آن باید Consumer باشد. Consumer تابعی است یک پارامتر می گیرد و از آن استفاده می کند و چیزی هم بر نمی گرداند (void). حالا مقدار بازگشتی متد myAction با استفاده از lambda تعریف شده که i همان یک پارامتری است که Consumer لازم دارد که در ادامه داستان جای متغییر it مینشیند.

قبل توسط (426 امتیاز)
ویرایش شده قبل توسط
خیلی ممنونم از جوابتون

سوالات مشابه

+1 امتیاز
1 پاسخ 1.2هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+2 امتیاز
1 پاسخ 942 بازدید
+1 امتیاز
1 پاسخ 403 بازدید
0 امتیاز
1 پاسخ 498 بازدید
0 امتیاز
1 پاسخ 519 بازدید
0 امتیاز
1 پاسخ 1.2هزار بازدید
...