برنامه نویسی فانکشنال با اسکالا خیلی لذت بخش و آسونه و به نظر من علاوه بر سینتکس روان و موجر اسکالا، یکی از دلایل اصلی اون وجود لایبرری های فانکشنال بسیار عالی در دنیای اسکالا هست.
یک لایبرری بسیار خوب برای برنامه نویسی فانکشنال در جاوا توسعه داده شده با نام Javaslang که خیلی امکانات فوق العاده ای داره. علاوه بر امکانات و کامل بودن ابزار های فانکشنال در Javaslang، یکی دیگر از مزایای اون (حداقل برای من) اینه که ابزار ها و امکانات این لایبرری بسیار شبیه لایبرری های اسکالا طراحی شده. به چند مثال نگاه کنید متوجه میشید:
pattern matching:
Number plusOne = Match(obj).of(
Case(instanceOf(Integer.class), i -> i + 1),
Case(instanceOf(Double.class), d -> d + 1),
Case($(), o -> { throw new NumberFormatException(); })
);
functional For:
Iterator<String> iterator =
For(persons.filter(Person::hasAddress), p ->
For(p.addresses).yield(a ->
p.name + "," + a.street
)
);
قسمت هایی از این لایبرری هنوز در حال تکمیل شدنه ولی مطمئنا این لایبرری نقش بسزایی در آینده فانکشنال جاوا ایفا خواهد کرد. حالا چه با استاندارد شدنش در JSR های مختلف چه با الگو گرفتن از این لایبرری.
برای مطالعه بیشتر درباره این لایبرری می تونید مستندات مفصل این لایبرری رو مطالعه کنید.
شاد باشید.