同じ入力データ型に対して異なるデータ型を返すAPIを処理するにはどうすればよいですか?

グレッグ

同じ入力データ型に対して異なるデータ型を返すAPIを処理するにはどうすればよいですか?

以下の例を見ると、apicall入力属性に応じて日付または文字列を返す必要があります。

#include <iostream>
#include <string>

using namespace std;

???? apicall(string datatype, string attribute)
{
    // code
}

int main(int argc, char** argv)
{
    string datatype = "Thomas"
    string attribute = "bithday"
    cout << apicall(datatype, attribute) << endl;

    string datatype = "Thomas"
    string attribute = "address"
    cout << apicall(datatype, attribute) << endl;
}

????apicallreturn datatype)の代わりに何ができるでしょうか?また、これらのケースをどのように処理するのですか?

これまでの私の経験はduck typedスクリプト言語であったため、私はこれらの概念を理解しようとしています。

ビアジオフェスタ

理想的な解決策は、のstd::variantような安全な共用体タイプであるを使用することです。

これにより、次のように書くことができます。

using DateOrString = std::variant<DateType, std::string>;

DateOrString api_call(std::string, std::string) {
   // you can return both DateType and std::string
}

// ...
auto result = api_call("", "");
auto& str = std::get<std::string>(result);

残念ながらstd::variantC ++ 17の機能です。ただし、さまざまなコンパイラがすでにサポートしています。

すでに提案されているようにboostvariantクラスがあり、任意のC ++標準で使用できます


最後のオプションとして、日付と文字列の両方を処理する「バリアントのような」クラスを実装できます。関数はそれを返す必要があります。

ここに、その種のクラスをすばやく実装する方法のデモがあります。

型は実行時にチェックされるため、クラスは安全であることに注意してください。

バリアントオブジェクトとして、呼び出し先関数は次のように型で分岐する必要があります。

auto result = api_call(/*...*/);
if (result.is_string()) {
   // result is a string
   const auto& str = result.get_string();
} else {
   // result is a date
   const auto& date = result.get_date();
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

入力リダイレクトを介してさまざまなデータ型を入力するにはどうすればよいですか?

分類Dev

PyTorchでCNNを使用してオーディオ分類用の入力データを処理するにはどうすればよいですか?

分類Dev

配列を反復処理し、データ型に基づいて要素を抽出するにはどうすればよいですか?

分類Dev

同じ入力に対して異なる型を返すことができる拡張メソッドを作成するにはどうすればよいですか?

分類Dev

データ型に応じて確率変数を生成するにはどうすればよいですか?

分類Dev

BigQuery:同じ列に3つの異なるフィルターを適用してデータを取得するにはどうすればよいですか?

分類Dev

CSVファイルにデータを保存した後、同じデータ型を維持するにはどうすればよいですか?

分類Dev

異なる列の同じデータを結合するにはどうすればよいですか?

分類Dev

同じ入力に対して異なるメッセージを取得するにはどうすればよいですか?

分類Dev

異なるデータ型が同じデータに対してより多くのメモリを使用するのはなぜですか?

分類Dev

リストを2つに分割して、異なるリストビューにデータを入力するにはどうすればよいですか?

分類Dev

入力データC#の同じ行にデータソースからのデータを追加するにはどうすればよいですか?

分類Dev

同じストリームを介して異なるエンコードのデータを送信するにはどうすればよいですか?

分類Dev

異なる入力引数を使用して同じ関数を適用し、パンダデータフレームに新しい列を作成するにはどうすればよいですか?

分類Dev

入力データが以前の入力データと同じであることを確認するにはどうすればよいですか?

分類Dev

予期しないデータ型をnaに設定するにはどうすればよいですか?

分類Dev

ユーザーからの入力として取得されたデータ型を格納する文字列をsizeof()演算子に渡し、データ型のサイズを取得するにはどうすればよいですか?

分類Dev

angulajsを使用して同じデータを異なるオプションにバインドするにはどうすればよいですか?

分類Dev

同じタブバーアイテムに対して異なるビューページを表示するにはどうすればよいですか?

分類Dev

リストモナドにエラー処理を追加するにはどうすればよいですか?どのデータ型が必要ですか?

分類Dev

`RowF Maybe`と` Maybe(RowF Identity) `の2つのデータ型を同じリストに入れるにはどうすればよいですか?

分類Dev

OpenAPI(Swagger)で同じHTTPステータスコードに対して異なる応答を定義するにはどうすればよいですか?

分類Dev

テーブルが異なる列名で構成されているがデータ型が同じである場合、テーブルでユニオンを実行するにはどうすればよいですか?

分類Dev

SharedPreferencesを使用してデータ型マップを保存するにはどうすればよいですか?

分類Dev

同じChartJSで異なるajax呼び出しからの異なるデータセットを表示するにはどうすればよいですか?

分類Dev

列を同じに保ちながら、Pandasデータフレームにリスト要素を入力するにはどうすればよいですか?

分類Dev

2つの異なるクラスが同じクラスを拡張してScalaで同じ型を返すにはどうすればよいですか?

分類Dev

VueJs。v-forデータを数値として処理するにはどうすればよいですか?

分類Dev

AndroidですべてのPageViewerのタブに異なるデータを入力するにはどうすればよいですか?

Related 関連記事

  1. 1

    入力リダイレクトを介してさまざまなデータ型を入力するにはどうすればよいですか?

  2. 2

    PyTorchでCNNを使用してオーディオ分類用の入力データを処理するにはどうすればよいですか?

  3. 3

    配列を反復処理し、データ型に基づいて要素を抽出するにはどうすればよいですか?

  4. 4

    同じ入力に対して異なる型を返すことができる拡張メソッドを作成するにはどうすればよいですか?

  5. 5

    データ型に応じて確率変数を生成するにはどうすればよいですか?

  6. 6

    BigQuery:同じ列に3つの異なるフィルターを適用してデータを取得するにはどうすればよいですか?

  7. 7

    CSVファイルにデータを保存した後、同じデータ型を維持するにはどうすればよいですか?

  8. 8

    異なる列の同じデータを結合するにはどうすればよいですか?

  9. 9

    同じ入力に対して異なるメッセージを取得するにはどうすればよいですか?

  10. 10

    異なるデータ型が同じデータに対してより多くのメモリを使用するのはなぜですか?

  11. 11

    リストを2つに分割して、異なるリストビューにデータを入力するにはどうすればよいですか?

  12. 12

    入力データC#の同じ行にデータソースからのデータを追加するにはどうすればよいですか?

  13. 13

    同じストリームを介して異なるエンコードのデータを送信するにはどうすればよいですか?

  14. 14

    異なる入力引数を使用して同じ関数を適用し、パンダデータフレームに新しい列を作成するにはどうすればよいですか?

  15. 15

    入力データが以前の入力データと同じであることを確認するにはどうすればよいですか?

  16. 16

    予期しないデータ型をnaに設定するにはどうすればよいですか?

  17. 17

    ユーザーからの入力として取得されたデータ型を格納する文字列をsizeof()演算子に渡し、データ型のサイズを取得するにはどうすればよいですか?

  18. 18

    angulajsを使用して同じデータを異なるオプションにバインドするにはどうすればよいですか?

  19. 19

    同じタブバーアイテムに対して異なるビューページを表示するにはどうすればよいですか?

  20. 20

    リストモナドにエラー処理を追加するにはどうすればよいですか?どのデータ型が必要ですか?

  21. 21

    `RowF Maybe`と` Maybe(RowF Identity) `の2つのデータ型を同じリストに入れるにはどうすればよいですか?

  22. 22

    OpenAPI(Swagger)で同じHTTPステータスコードに対して異なる応答を定義するにはどうすればよいですか?

  23. 23

    テーブルが異なる列名で構成されているがデータ型が同じである場合、テーブルでユニオンを実行するにはどうすればよいですか?

  24. 24

    SharedPreferencesを使用してデータ型マップを保存するにはどうすればよいですか?

  25. 25

    同じChartJSで異なるajax呼び出しからの異なるデータセットを表示するにはどうすればよいですか?

  26. 26

    列を同じに保ちながら、Pandasデータフレームにリスト要素を入力するにはどうすればよいですか?

  27. 27

    2つの異なるクラスが同じクラスを拡張してScalaで同じ型を返すにはどうすればよいですか?

  28. 28

    VueJs。v-forデータを数値として処理するにはどうすればよいですか?

  29. 29

    AndroidですべてのPageViewerのタブに異なるデータを入力するにはどうすればよいですか?

ホットタグ

アーカイブ