برنامه نویسی

درک عملکردهای مرتبه بالاتر در GO

عملکرد مرتبه بالاتر چیست؟

بوها عملکرد مرتبه بالاتر (HOF) تابعی است که یا عملکرد دیگری را به عنوان یک آرگومان می گیرد یا یک تابع را برمی گرداند به عنوان نتیجه آن

این امر باعث می شود توابع با امکان پذیر بودن مفاهیمی مانند انعطاف پذیرتر و قدرتمندتر شوند پاسخ به تماس ، ترکیب عملکرد و الگوهای برنامه نویسی عملکردیبشر


خصوصیات توابع مرتبه بالاتر

به عنوان یک آرگومان عملکردی می گیرد

در نتیجه یک عملکرد را برمی گرداند

قابلیت استفاده مجدد و مدولار بودن کد را افزایش می دهد

مشترک در الگوهای برنامه نویسی عملکردی


نمونه هایی از عملکردهای مرتبه بالاتر در GO

1⃣ عبور یک تابع به عنوان یک آرگومان

تابعی که عملکرد دیگری را به عنوان یک پارامتر می پذیرد و آن را برای دو عدد صحیح اعمال می کند.

package main

import "fmt"

// Higher-order function: Takes a function as an argument
func operate(a int, b int, op func(int, int) int) int {
    return op(a, b)
}

// Function to add two numbers
func add(x, y int) int {
    return x + y
}

func main() {
    result := operate(4, 5, add)
    fmt.Println("Result:", result) // Output: Result: 9
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چرا مرتبه بالاتر؟

  • operate عملکرد دیگری را می گیرد (op) به عنوان یک استدلال.
  • این باعث می شود operate انعطاف پذیر ، زیرا می تواند عملکردهای مختلفی مانند آن را اعمال کند addبا subtractبا multiply، و غیره

2 ⃣ بازگشت یک تابع از یک عملکرد دیگر

تابعی که عملکرد دیگری را برمی گرداند به جای یک مقدار مستقیم

package main

import "fmt"

// Higher-order function: Returns a function
func multiplier(factor int) func(int) int {
    return func(n int) int {
        return n * factor
    }
}

func main() {
    double := multiplier(2) // double now holds a function that multiplies by 2
    fmt.Println(double(5))  // Output: 10
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چرا مرتبه بالاتر؟

  • multiplier(2) تابعی را برمی گرداند که هر عدد را به 2 برابر می کند.
  • عملکرد برگشتی در ذخیره می شود double، که بعداً قابل استفاده است.

3⃣ با استفاده از توابع ناشناس در توابع مرتبه بالاتر

به جای تعریف یک عملکرد جداگانه ، می توانیم از تابع ناشناس مستقیم.

package main

import "fmt"

func operate(a int, b int, op func(int, int) int) int {
    return op(a, b)
}

func main() {
    result := operate(10, 3, func(x, y int) int {
        return x - y
    })
    fmt.Println("Result:", result) // Output: Result: 7
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چرا مرتبه بالاتر؟

  • در operate عملکرد طول می کشد تابع ناشناس به عنوان یک پارامتر
  • نیازی به تعریف یک عملکرد جداگانه مانند subtractبشر

مرتبه اول در مقابل توابع مرتبه بالاتر

نشان تابع مرتبه اول عملکرد مرتبه بالاتر
عملکرد دیگری را می پذیرد؟ ❌ نه ✅ بله
عملکرد دیگری را برمی گرداند؟ ❌ نه ✅ بله
نمونه sumArray([]int) operate(4, 2, func(x, y int) int { return x * y })

چه موقع از توابع مرتبه بالاتر استفاده کنیم؟

✅ هنگام نوشتن توابع عمومی ، قابل استفاده مجدد

✅ هنگام استفاده تماس تلفنی یا ترکیب عملکرد

✅ هنگام اجرای عملیات مرتب سازی ، فیلتر یا نقشه برداری سفارشی

✅ هنگام درخواست الگوهای برنامه نویسی عملکردی

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا