ホームページ  >  記事  >  バックエンド開発  >  インターフェイスのメソッドチェーンを行うにはどうすればよいですか?

インターフェイスのメソッドチェーンを行うにはどうすればよいですか?

PHPz
PHPz転載
2024-02-13 08:39:08915ブラウズ

インターフェイスのメソッドチェーンを行うにはどうすればよいですか?

php エディタ Xiaoxin では、インターフェイスのメソッドをチェーンする方法について紹介します。メソッド チェーンは、1 つのステートメントで複数のメソッドを連続的に呼び出すことができる洗練されたプログラミング手法であり、コードの単純さと読みやすさを向上させます。この記事では、メソッド チェーン プログラミングをより適切に適用し、コードの効率と保守性を向上させるために、インターフェイスのメソッド チェーンを実装する方法に関するヒントと注意事項を詳しく紹介します。一緒に探検しましょう!

質問内容

obj.withx().withy().withz()のようなことをしたいのですが。 obj にはさまざまな型を含めることができるため、インターフェイスを使用します。

残念ながら、objnil になることもあります。この場合、nil インターフェースでメソッドを呼び出しており、go はどのメソッドを呼び出すべきかわからないため、メソッドチェーンはパニックになります。

これは再現可能な最小限の例です

nil である可能性のあるオブジェクトに対してメソッド チェーンを引き続き使用するにはどうすればよいですか?

  • withx() やその他の関数のデフォルト実装を提供する方法はありますか?
  • 各属性関数が関数を返すパターンも考えましたが、これは複雑すぎるようです
  • obj.WithX().WithY()    // of type func() myInterface
    obj.WithX().WithY()()  // now I got the actual object.
回避策

これらのコメント

はほとんど 正しいですが、実際には untyped nil を返すことはできません。 リーリー

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

したがって、基本的に必要なのは「デフォルト」型だけです。これは nil であってもインターフェイスを実装します。

以上がインターフェイスのメソッドチェーンを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。