型の動的な選択を必要とするコードの重複を避けるにはどうすればよいでしょうか?
コードを作成するとき、さまざまな条件に基づいてさまざまなタイプのコードを選択する必要がある状況に遭遇することがよくあります。この場合、適切に処理しないと、コードが冗長で反復的なものになる可能性があります。では、このコードの重複を避けるにはどうすればよいでしょうか? PHP エディター Baicao がいくつかのシンプルで効果的なソリューションを提供しました。見てみましょう。
質問内容
次のコードは、ビデオ ストリーム パーサーの簡略化された例です。入力は、ビデオおよびオーディオ フレームを含むバイナリ データです。各フレームは次の部分で構成されます:
- フレーム タイプ フラグ。ビデオ フレームかオーディオ フレームかを示します。 ###タイトル### ###ペイロード###
- 目標は、ストリームを解析し、ヘッダーとペイロードからフィールドを抽出することです。
- 最初の方法は次のとおりです:
これは機能しますが、
switchの場合にコードが重複するのは好きではありません。基本的に、フレーム タイプが異なるという理由だけで、同じコードを繰り返す必要があります。
重複を避けるための 1 つの方法は次のとおりです:
リーリー
つまり、フレーム タイプに基づいて正しい構造のインスタンスを作成できるようにする
マッピングを導入することで、動的なタイプ選択を実装します。ただし、この解決策では、フレーム タイプごとに
GetLength() メソッドを繰り返す必要があります。
私が非常に気になるのは、重複を完全に回避する方法がないようだということです。 何か見落としがあるのでしょうか、それとも単に言語の制限でしょうか?
これは関連する質問 (実際には同じ問題によって引き起こされます) ですが、その前提では動的な型選択の必要性が無視されているため、受け入れられている解決策 (ジェネリックスを使用) は役に立ちません。 回避策
Kingの答えでは、長さのエンコードに使用される整数型ごとにそれを繰り返す必要があります。
モンダリンの答え ひどい reflect パッケージを使用してください。両方の問題を回避するための解決策は次のとおりです。この答えはキングの答えに基づいています。
GetLength() メソッドを使用してジェネリック型を宣言します。
リーリー
各ヘッダー タイプから GetLength メソッドを削除します。各ヘッダー タイプに共通の長さのタイプを埋め込みます:
質問のように
TMapを記述します。
GetLength メソッドは、埋め込みフィールドによって提供されます。
リーリー
https://www.php.cn/link/ceb9f6b8ffa77c49b6b4570ea19c76bf
(質問のコードと同様、この回答では、binary.Read 関数を介して間接的に
reflect パッケージを使用します。 reflect
パッケージは優れたツールですコードをドライに保つため。)
以上が型の動的な選択を必要とするコードの重複を避けるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









暗号通貨としてのビットコインは、その誕生以来、市場の大きな変動を経験してきました。この記事では、読者がビットコインの価格傾向と重要な瞬間を理解できるように、誕生以来のビットコインの歴史的な価格の概要を提供します。ビットコインの過去の価格データを分析することで、その価値に対する市場の評価やその変動に影響を与える要因を理解し、将来の投資決定の基礎を提供することができます。

2009年の作成以来、ビットコインの価格はいくつかの大きな変動を経験し、2021年11月に69,044.77ドルに上昇し、2018年12月に3,191.22ドルに減少しました。 2024年12月の時点で、最新の価格は100,204ドルを超えています。

リアルタイムのビットコインUSD価格 ビットコインの価格に影響を与える要因 将来のビットコイン価格を予測するための指標 2018年から2024年のビットコインの価格に関する重要な情報を次に示します。

はい、H5ページの生産は、HTML、CSS、JavaScriptなどのコアテクノロジーを含むフロントエンド開発のための重要な実装方法です。開発者は、< canvas>の使用など、これらのテクノロジーを巧みに組み合わせることにより、動的で強力なH5ページを構築します。グラフィックを描画するタグまたはJavaScriptを使用して相互作用の動作を制御します。

CSSでサイズ変更シンボルをカスタマイズする方法は、背景色で統一されています。毎日の開発では、調整など、ユーザーインターフェイスの詳細をカスタマイズする必要がある状況に遭遇することがよくあります...

インラインブロック要素の誤った整列ディスプレイの理由とソリューションに関して。 Webページのレイアウトを書くとき、私たちはしばしばいくつかの奇妙な表示の問題に遭遇します。比較する...

JavaScriptまたはCSSを使用して、ブラウザの印刷設定のページの上部と端を制御する方法。ブラウザの印刷設定には、ディスプレイが...

フレックスレイアウトとソリューションの下でのテキストの過度の省略によるコンテナの開口部の問題が使用されます...
