Bagaimana cara melakukan rantaian kaedah untuk antara muka?

PHPz
Lepaskan: 2024-02-13 08:39:08
ke hadapan
886 orang telah melayarinya

Bagaimana cara melakukan rantaian kaedah untuk antara muka?

Editor PHP Xiaoxin membawakan anda pengenalan tentang cara melaksanakan rantaian kaedah untuk antara muka. Rantaian kaedah ialah kaedah pengaturcaraan elegan yang boleh terus memanggil pelbagai kaedah dalam satu kenyataan, meningkatkan kesederhanaan dan kebolehbacaan kod. Dalam artikel ini, kami akan memperkenalkan secara terperinci petua dan langkah berjaga-jaga tentang cara melaksanakan rantaian kaedah untuk antara muka untuk membantu anda menggunakan pengaturcaraan rantai kaedah dengan lebih baik dan meningkatkan kecekapan dan kebolehselenggaraan kod anda. Mari kita meneroka bersama-sama!

Kandungan soalan

Saya nak buat macam obj.withx().withy().withz() 的事情。 obj yang boleh ada jenis yang berbeza, sebab itu saya menggunakan antara muka.

Malangnya obj 也可以是 nil. Dalam kes ini kaedah rantaian saya akan panik kerana saya memanggil kaedah pada antara muka nil dan pergi tidak tahu kaedah mana yang hendak dipanggil.

Berikut ialah contoh minimum yang boleh diulang

Bagaimana untuk masih menggunakan kaedah rantaian pada objek yang mungkin nil ?

  • Adakah terdapat cara untuk menyediakan pelaksanaan lalai untuk withx() dan fungsi lain?
  • Saya juga mempertimbangkan corak di mana setiap fungsi atribut mengembalikan fungsi, tetapi itu nampaknya terlalu rumit
obj.WithX().WithY()    // of type func() myInterface
obj.WithX().WithY()()  // now I got the actual object.
Salin selepas log masuk

Penyelesaian

Komen ini kebanyakannya betul, tetapi sebenarnya anda tidak boleh mengembalikan tidak ditaip sifar.

func new(someParam bool) inter {
    // more complicated. May return A, B or nil
    if someParam {
        return &A{}
    }
    var b *B
    return b // which is nil, but of a type that implements the interface
}
Salin selepas log masuk

https://www.php.cn/link/845c31a2fbc3d2e14ecb17d48dcc65a4

Jadi pada asasnya anda hanya memerlukan jenis "lalai", yang boleh menjadi nihil dan yang masih melaksanakan antara muka.

Atas ialah kandungan terperinci Bagaimana cara melakukan rantaian kaedah untuk antara muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!