درک عملکردهای مرتبه بالاتر در 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 }) |
چه موقع از توابع مرتبه بالاتر استفاده کنیم؟
✅ هنگام نوشتن توابع عمومی ، قابل استفاده مجدد
✅ هنگام استفاده تماس تلفنی یا ترکیب عملکرد
✅ هنگام اجرای عملیات مرتب سازی ، فیلتر یا نقشه برداری سفارشی
✅ هنگام درخواست الگوهای برنامه نویسی عملکردی