Sobes.tech
Junior

Ифодаҳои lambda дар Java чистанд?

sobes.tech AI

Ҷавоб аз AI

Ифодаи lambda дар Java — функсияи номаълум (бе ном) мебошад, ки интерфейси функсионалиро иҷро мекунад.

Хусусиятҳои асосӣ:

  • Ном надоранд.
  • Мумкин аст параметрҳо дошта бошанд.
  • Тана метавонад аз як израз ё блоки фармонҳо иборат бошад.
  • Типи баргардонидашавӣ нишон дода нашудааст (автоматӣ муайян мешавад).
  • Барои барномасозии функсионалӣ ва кор бо ҷараёнҳо (Streams API) зарур аст.

Синтаксис:

// Бе параметр
() -> { // тана }

// Бо як параметр (тӯри мумкин аст гузошта шавад)
param -> израз

// Бо чанд параметр (тӯри мумкин аст гузошта шавад, зарур аст паренҳезҳо)
(param1, param2) -> { // тана }

Маслиҳат истифода:

// Интерфейси функсионалӣ (дарунсохт)
import java.util.function.Consumer;

// Иҷро бо lambda
Consumer<String> чопгар = s -> System.out.println(s);
чопгар.accept("Салом ҷаҳон!");

// Истифода дар як усул, ки интерфейси функсионалиро қабул мекунад
import java.util.Arrays;
import java.util.List;

List<Integer> рақамҳо = Arrays.asList(1, 2, 3, 4, 5);
рақамҳо.forEach(n -> System.out.println(n)); // forEach Consumer-ро қабул мекунад

Фоидаҳо:

  • Коди кӯтоҳтар.
  • Беҳтар хонданӣ (дар ҳолатҳои содда).
  • Имконият барои истифодаи барномасозии функсионалӣ.
  • Осон кардани кор бо коллексияҳо ва бисёрсӯзиш.

Маҳдудиятҳо:

  • Lambda-ҳои дарундаро ё дароз метавонад душвор фаҳмидан бошанд.
  • Ҳолат надоранд (наметавонанд майдонҳои намунавӣ дошта бошанд).