您好我有一段代码如下,我想避免多个if else,是否有更好的方法:
if(strcmp(somename, "some") == 0)
{
fun();
}
else if(strcmp(somename,"some1") == 0)
{
fun();
}
else if(strcmp(somename,"some2") == 0)
{
fun();
}
else if(strcmp(somename,"some3") == 0)
{
fun();
}
答案 0 :(得分:7)
您可以使用指向指针和循环的指针:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pythagoras);
aNumPyt = (EditText) findViewById(R.id.aNumPyt);
bNumPyt = (EditText) findViewById(R.id.bNumPyt);
cNumPyt = (EditText) findViewById(R.id.cNumPyt); //Forgot to add this line of code
pythagorasCalcu = (Button) findViewById(R.id.pythagorasCalcu);
pythagorasResultFinal = (TextView) findViewById(R.id.pythagorasResultFinal);
// set a listener
pythagorasCalcu.setOnClickListener(this);
}
答案 1 :(得分:-1)
为要调用的somename
到std::function
个实例创建一个映射(有序或无序)映射值。
答案 2 :(得分:-1)
您可以尝试使用switch
个案例的简单方法。例如,您可以像
switch(somename) {
case "some1" :
fun1();
break;
case "some2" :
fun2();
break;
case "some3" :
fun3();
break;
default :
//some default case
}
你也可以在str2int
中使用c++11
,以防开关无法正常使用字符串
switch(str2int(somename)) {
case str2int("some1") :
fun1();
break;
case str2int("some2") :
fun2();
break;
case str2int("some3") :
fun3();
break;
default :
//some default case
}