Rumah > pembangunan bahagian belakang > Golang > Bagaimana Anda Boleh Mencapai Aplikasi Separa dan Fungsi Kari dalam Go?

Bagaimana Anda Boleh Mencapai Aplikasi Separa dan Fungsi Kari dalam Go?

Patricia Arquette
Lepaskan: 2024-11-08 10:39:02
asal
347 orang telah melayarinya

How Can You Achieve Partial Application and Function Currying in Go?

Kari dalam Go

Dalam pengaturcaraan berfungsi, kari ialah teknik untuk mengubah fungsi yang mengambil berbilang argumen menjadi satu siri fungsi bersarang yang setiap satunya mengambil satu argumen. Ini membenarkan aplikasi separa, di mana fungsi boleh digunakan pada subset argumennya untuk menghasilkan fungsi baharu yang mengambil argumen yang tinggal.

Aplikasi Separa dalam Go

Aplikasi separa tidak secara langsung disokong dalam Go, tetapi ia boleh dicapai menggunakan penutupan. Penutupan ialah fungsi yang mengekalkan akses kepada pembolehubah skop yang disertakan walaupun selepas skop telah keluar. Dengan mengembalikan penutupan daripada fungsi, kita boleh mencipta fungsi yang digunakan separa.

Sebagai contoh, fungsi berikut mengembalikan penutupan yang menambahkan nombor tertentu pada inputnya:

func add(a int) func(b int) int {
    return func(b int) int {
        return a + b
    }
}
Salin selepas log masuk

Kami kemudian boleh menggunakan penutupan ini untuk menggunakan sebahagian fungsi tambah:

add2 := add(2)
fmt.Println(add2(3)) // prints 5
Salin selepas log masuk

Fungsi Currying in Go

Fungsi karipap juga boleh dicapai dalam Go menggunakan penutupan. Fungsi berikut mengurut fungsi yang mengambil berbilang argumen:

func curry(f func(...int) int) func(int) func(...int) int {
    return func(a int) func(...int) int {
        return func(b... int) int {
            args := append([]int{a}, b...)
            return f(args...)
        }
    }
}
Salin selepas log masuk

Fungsi ini mengembalikan fungsi yang mengambil satu argumen dan mengembalikan fungsi baharu yang mengambil argumen yang tinggal. Kita kemudiannya boleh menggunakan fungsi ini untuk mengari mana-mana fungsi:

add := curry(func(a, b, c int) int { return a + b + c })
add2 := add(2)
add3 := add3(3)
fmt.Println(add3(4)) // prints 9
Salin selepas log masuk

Kesimpulan

Walaupun Go tidak menyokong aplikasi separa atau fungsi kari secara asli, teknik ini boleh dicapai menggunakan penutupan. Ini membolehkan pengaturcara Go memanfaatkan konsep pengaturcaraan berfungsi bagi aplikasi separa dan kari, walaupun bahasa itu sendiri tidak memberikan sokongan langsung untuk mereka.

Atas ialah kandungan terperinci Bagaimana Anda Boleh Mencapai Aplikasi Separa dan Fungsi Kari dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan