ホームページ  >  記事  >  バックエンド開発  >  任意のチャネルタイプのタイプ制約を定義する方法

任意のチャネルタイプのタイプ制約を定義する方法

WBOY
WBOY転載
2024-02-13 09:40:09877ブラウズ

任意のチャネルタイプのタイプ制約を定義する方法

PHP の型制約は、関数またはメソッドのパラメーターで受け入れられるパラメーターの型を定義できる強力な機能です。基本的なデータ型に限定されるだけでなく、PHP ではカスタム クラス、インターフェイス、配列、反復可能なオブジェクトの型制約を定義することもできます。この記事では、コードをより適切に制御および保護するために、任意のチャネル タイプの型制約を定義する方法を紹介します。初心者でも経験豊富な開発者でも、これらのヒントはコードをより読みやすく、保守しやすくするのに役立ちます。

質問の内容

指定されたチャネルの使用率を返す関数を定義しようとしています:

リーリー

問題は、func シグネチャを変更しないと、これが最初のチャネルでは機能するが、2 番目と 3 番目のチャネルでは機能しないことです。ただし、署名を変更する場合は、受信のみまたは送信のみのチャネルを選択する必要があります。ゼロパスチャネルを定義する方法はありますか?例えば。読み取りも書き込みもできません。cap 関数と len 関数を使用したいだけです。 理想的には、channelusagepct はこれら 3 つのケースのいずれでも機能するはずです。

回避策

チャネルの可能な 3 つの形式すべてを許可するには、個別の型制約を定義する必要があります。

リーリー

これには、使用時に t の型を使用して型制約をインスタンス化する必要があります。これは、別の型パラメーターを使用して行うことができます:

リーリー

インスタンス化のため、型全体を推論することはできませんが、チャネル要素の型のみを指定する必要があります。

リーリー

https://www.php.cn/link/ca279b8542ab30bd43469423ce703e66

以上が任意のチャネルタイプのタイプ制約を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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