我有一个需要检索大小类型的方法,例如我需要返回一个“小”,“中”或“大”的字符串。
所以我打电话给GetSize(int size)
。但是我也需要知道我想要返回的大小,我想要返回“小”还是我想要返回“s”。因此,该方法增长到GetSize(int size, enum format)
。
现在我可以做一个切换案例,但它会是
switch (size)
{
case SMALL_SIZE:
switch(format)
case format::short
case format::long
}
所以我必须在每个案例中为“大小”做一个开关案例。我也可以将其分解并调用一种方法来获取每种大小的格式。
这似乎很多工作,我这里只有3个大小的案例,但想象其他的是10个案例。我的解决方案是最好的还是有更好的方法?
答案 0 :(得分:3)
看来您的方法可以用简单的二维数组代替。
// 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];
}
答案 1 :(得分:0)
您还可以采取以下措施:
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;
}