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

WBOY
リリース: 2024-02-15 15:42:23
転載
1077 人が閲覧しました

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

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート