ホームページ  >  記事  >  バックエンド開発  >  可変引数関数に渡されるジェネリック構造体の特定のフィールドにアクセスする

可変引数関数に渡されるジェネリック構造体の特定のフィールドにアクセスする

WBOY
WBOY転載
2024-02-15 15:42:231074ブラウズ

可変引数関数に渡されるジェネリック構造体の特定のフィールドにアクセスする

php エディター Strawberry では、可変パラメーター関数へのアクセスを渡すために使用される特定のフィールドの一般的な構造を紹介します。可変引数関数は可変数のパラメーターを受け入れる関数ですが、実際のアプリケーションでは、特定のフィールドの値をこれらの関数に渡す必要があることがよくあります。この一般的な構造を使用すると、可変引数関数へのアクセスを簡単に渡したり、特定のフィールドの値を指定したりできるため、より柔軟で正確なパラメーターの受け渡しが可能になります。この共通の構造により、コードが大幅に簡素化され、可読性と保守性が向上します。

質問の内容

foo という名前の汎用 struct があるとします。 リーリー

可変引数関数があり、それにいくつかの

foo を渡したいと考えています。任意のタイプ foo にすることができます。私の理解では、foo[int]foo[string] と同じではないため、次のように省略記号を any 型として定義する必要があるということです。 ## リーリー これは実際に機能します。

リーリー

私の問題は、各

foo

data フィールドに具体的にアクセスしたいことです。しかし、bar を次のように定義すると、 リーリー コンパイラが動揺するのは当然です。

things

anything である可能性があり、data フィールドがあることが保証されていないからです。 私は

foos を常に渡すため、data というフィールドがあることは知っていますが、 のみを渡すことを指定することはできません。 foos、このように、 リーリー #foo の型が指定されていないためです。

不特定の量の foo

bar

に渡して、data フィールドにアクセスするにはどうすればよいですか? 回避策1つの解決策は、リフレクションを使用し、

fieldbyname

:

を使用してフィールドにアクセスすることのようです。 リーリー

これが何らかの理由で障害や危険とみなされるかどうかはわかりません。おそらく、 things 内のすべてが実際に何らかの種類の

foo

であることを確認するために、そこで何らかのチェックを行う必要があります。そうしないと、存在しないフィールドにアクセスしようとしている可能性があります。

以上が可変引数関数に渡されるジェネリック構造体の特定のフィールドにアクセスするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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