Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana cara melakukan rantaian kaedah untuk antara muka?

Bagaimana cara melakukan rantaian kaedah untuk antara muka?

PHPz
PHPzke hadapan
2024-02-13 08:39:08867semak imbas

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.

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
}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam