如何有效地设计一种方法,使每个条件都依赖于另一个条件
How can I efficiently design a method where each condition is dependent on another condition?
我有一个方法需要检索一个大小类型,例如,我需要返回一个字符串,上面写着"small"、"medium"或"large"。
所以我叫GetSize(int size)
。但我也需要知道我想如何返回大小,我想返回"小"还是"s"。因此该方法发展为GetSize(int size, enum format)
。
现在我可以做一个切换案例,但它将是
switch (size)
{
case SMALL_SIZE:
switch(format)
case format::short
case format::long
}
因此,我必须在每个箱子里做一个"大小"的开关箱。我也可以将其分解并调用一个方法来获取每个大小写的格式。
这似乎是一项艰巨的工作,我这里只有3个大小的箱子,但想象一下,其他的是10个箱子。我的解决方案是最好的还是有更好的方法?
您的方法似乎可以被一个简单的二维数组所取代。
// Use actual sizes in the declaration below
static string FormattedSize[2][2] = {
{"small", "s"}
, {"medium", "m" }
// and so on...
};
string GetSize(int size, enum format) {
return FormattedSize[size][format];
}
您也可以按照以下方式进行操作:
switch(true) {
case ((size == SMALL_SIZE) && (format == format::short)):
case ((size == MEDIUM_SIZE) && (format == format::short)):
return "s";
break;
case ((size == LARGE_SIZE) && (format == format::short)):
case ((size == SMALL_SIZE) && (format == format::long)):
return "m";
break;
case ((size == MEDIUM_SIZE) && (format == format::long)):
case ((size == LARGE_SIZE) && (format == format::long)):
return "l";
break;
}
相关文章:
- 访问条件类成员的方法不仅在被调用时才编译
- 实现基于数字值(正、负、零)的条件表达式的最佳方法
- 如何使用 SFINAE 在方法调用中有条件地定义变量?
- 找到一种使用 C++ 中的条件提取浮点数的方法
- 有没有一种很好的方法来实现具有默认失败情况的条件类型?
- 有条件地删除模板类中的方法
- 此工厂方法是否会导致争用条件?
- 根据编译时条件在类型之间选择类型的惯用方法
- 在C++有没有更好的方法可以做到这一点?检查哪些数字满足条件 [A*B*C = A! + B! + C!]
- 三元条件结果的方法
- C ,最有效的方法将大写速度更改为小写,反之亦然,而无需条件分支
- 有没有更简单的方法在 Rcpp 中使用 NumericVector 编写条件语句
- 使用 gtest EXPECT_CALL 时竞争条件段错误,而另一个期望是执行相同的方法
- 在什么条件下,纯虚拟方法生成了
- 是否有更简单的方法来定义C 中的for循环中的条件
- 在条件上更新变量的最快方法是什么?
- 在 C++11 中实现虚拟方法条件
- 非模板类方法的条件模板专用化
- 是否有 std 或提升容器可以避免其插入和查找方法之间的争用条件
- 有条件地控制 for 循环方向的最佳方法是什么