Lambda Function در زبان‌های مدرن چیست

خلاصه
1404/05/29

Lambda Function در زبان‌های برنامه‌نویسی مدرن، یک تابع anonymous یا بی‌نام است. به عبارت دیگر، تابعی است که بدون نیاز به نام‌گذاری تعریف می‌شود. این توابع معمولاً کوچک و یک‌خطی

Lambda Function در زبان‌های مدرن چیست

Lambda Function در زبان‌های برنامه‌نویسی مدرن، یک تابع anonymous یا بی‌نام است. به عبارت دیگر، تابعی است که بدون نیاز به نام‌گذاری تعریف می‌شود. این توابع معمولاً کوچک و یک‌خطی هستند و برای انجام وظایف ساده و سریع مورد استفاده قرار می‌گیرند.

**ویژگی‌های کلیدی Lambda Functions:**

* **Anonymous (بی‌نام):** هیچ نامی به تابع اختصاص داده نمی‌شود.
* **Concise (خلاص):** معمولاً در یک خط کد تعریف می‌شوند.
* **Limited Scope (محدوده محدود):** برای وظایف کوچک و ساده طراحی شده‌اند.
* **First-Class Citizens:** مانند سایر متغیرها و مقادیر، می‌توانند به عنوان آرگومان به توابع دیگر ارسال شوند و یا به عنوان مقدار برگشتی از یک تابع برگردانده شوند.
* **Closure (بستار):** می‌توانند به متغیرهای موجود در محدوده اطراف خود دسترسی داشته باشند (در برخی زبان‌ها).

**کاربردهای Lambda Functions:**

* **Callback Functions:** برای ارسال یک تابع به عنوان آرگومان به یک تابع دیگر که آن را در زمان معینی فراخوانی می‌کند.
* **Simple Operations:** انجام عملیات‌های ساده مانند فیلتر کردن، مرتب‌سازی و تبدیل داده‌ها.
* **Readability:** در برخی موارد، استفاده از Lambda Functions می‌تواند کد را خواناتر و مختصرتر کند.

**مثال‌ها در زبان‌های مختلف:**

* **Python:**

```python
# تابع lambda برای محاسبه مربع یک عدد
square = lambda x: x * x
print(square(5)) # خروجی: 25

# استفاده در توابع higher-order مانند map
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x * x, numbers))
print(squared_numbers) # خروجی: [1, 4, 9, 16, 25]
```

* **JavaScript:**

```javascript
// تابع lambda برای جمع دو عدد
const add = (x, y) => x + y;
console.log(add(3, 4)); // خروجی: 7

// استفاده در توابع آرایه مانند filter
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(x => x % 2 === 0);
console.log(evenNumbers); // خروجی: [2, 4]
```

* **Java (از نسخه 8 به بعد):**

```java
// تابع lambda برای ضرب دو عدد
interface MathOperation {
int operate(int a, int b);
}

public class Main {
public static void main(String[] args) {
MathOperation multiply = (a, b) -> a * b;
System.out.println(multiply.operate(3, 4)); // خروجی: 12
}
}
```

* **C#:**

```csharp
using System;
using System.Linq;

public class Example
{
public static void Main(string[] args)
{
// تابع lambda برای بررسی زوج بودن یک عدد
Func isEven = x => x % 2 == 0;
Console.WriteLine(isEven(4)); // خروجی: True

// استفاده در LINQ برای فیلتر کردن
int[] numbers = {1, 2, 3, 4, 5};
var even