返回一组数据类型之一的最佳模式

Best pattern for returning one of set of types of data

本文关键字:最佳 数据类型 模式 一组 返回      更新时间:2023-10-16

我有接受字符串并使用正则表达式方法来确定该字符串是否表示浮点数、整数或字符串的方法。

返回结果浮点数、整数或字符串的最佳模式是什么?

所以我的基本方法原型是:

void interpretString(const std::string &s);

取回生成的浮点数、int 或字符串的最佳方法是什么?目前,我扩展了我的方法如下:

enum dataType { None, String, Float, Int };
dataType interpretString(const std::string &s,
                         string &s,
                         float &f,
                         int &i);

其中数据在相应的 s、f 或 i 变量中返回。这似乎不令人满意,因为我正在传递永远不会使用的数据(例如,如果输入字符串是浮点数,则字符串和整数返回值将未使用)

有没有更好的方法?

下面是使用函数对象的另一种方法:

struct Evaluation_Assignment
{
  virtual void assign(const std::string& s) = 0;
  virtual void assign(int i) = 0;
  virtual void assign(double d) = 0;
};
void Interpret_String(const std::string string_to_process,
                      Evaluation_Assignment& processor)
{
  if (interpretation_was_string)
  {
     processor.assign(s);
  }
}