在函数输入中给出一个参数,是否可以返回具有该特定名称的变量?
例如,如果您有以下代码:
string returnsParameter(string parameter)
{
string a = "test";
string b = "test 2";
string c = "test 3";
return parameter;
}
你跑returnsParameter("a")
,是否有某种方法可以返回“测试”?我尝试使用指针和引用变量,但是你不能进行非常量引用。
有没有办法在不使用地图的情况下执行此操作?
答案 0 :(得分:5)
您可以将try {
JSONObject ai=new JSONObject(response);
JSONObject cat_img=ai.getJSONObject("category_image");
int id=cat_img.getInt("id"); //you can get id here
JSONObject cat_url=cat_img.getJSONObject("cover_url");
String url=cat_url.getString("url"); //you can get url from here
ArrayList<Business> premiumsList=new ArrayList<>();
premiumsList.add(new Business(cat_img.getString("name"),url)); //add it to aaray
} catch (JSONException e) {
e.printStackTrace();
}
用于此目的。
创建std::map
并在其中添加map<string, string> strings
对并返回("a", "test")
。
据我所知,无法访问变量名称。 (这是我的信念,我不完全确定)
答案 1 :(得分:1)
如果您不被允许使用std::map
,那么我担心您必须使用一组条件,请注意您根本不需要创建变量:
string returnsParameter(string parameter)
{
if( parameter == "a" ) return "test";
if( parameter == "b" ) return "test 2";
if( parameter == "c" ) return "test 3";
return "???";
}
答案 2 :(得分:1)
如果您的关键域仅存在于字母a~z中,并且数据在代码中是固定的,您可以
创建一个静态数组,按char
索引它。
const std::string& lookup(char key)
{
static const std::string bank[] = {
"Apple",
"Banana",
"Cranberry",
};
static const size_t n = sizeof bank / sizeof bank[0];
int i = key - 'a';
return i >= 0 && i < n ? bank[i]: "N/A";
}
lookup('a'); // string("Apple")
lookup('c'); // string("Cranberry")
答案 3 :(得分:0)
任何解决方案都需要使用地图,至少在内部,因为系统必须使用它来决定返回哪个键/值对,即使是变量名也是如此。
您的选择是使用std :: map,使用if语句硬连接值,或者拥有自己的查找表。但请记住,您需要具有默认返回值,以防万一找不到密钥。
string returnsParameter(string parameter)
{
vector<string> values =
{
"a", "test",
"b", "test 2",
"c", "test 3"
}
for(int i = 0; i < values.size(); i += 2 )
{=
if(values[i] == parameter) return values[i + 1];
}
return "Not Found";
}