If statement 许多if-ElseIf的省道交替

If statement 许多if-ElseIf的省道交替,if-statement,flutter,dart,If Statement,Flutter,Dart,我想用另一个字符串替换Dart中的URL字符串。 例如: if(url==”http://www.example.com/1") { home=“示例”; }else if(url==”http://www.example.com/2") { home=“另一个例子”; } 难道没有更好的方法,代码更少,速度更快吗?我必须这样做60多次。如果你想要更少的代码,你可以这样做: homes = { "http://www.example.com/1": "example", "http:/

我想用另一个字符串替换Dart中的URL字符串。 例如:

if(url==”http://www.example.com/1") {
home=“示例”;
}else if(url==”http://www.example.com/2") {
home=“另一个例子”;
}

难道没有更好的方法,代码更少,速度更快吗?我必须这样做60多次。

如果你想要更少的代码,你可以这样做:

homes = {
  "http://www.example.com/1": "example",
  "http://www.example.com/2": "another example",
  "http://www.example.com/3": "yet another one",
};
home = homes[url];

您可以使用switch语句

switch(variable_expression) { 
   case constant_expr1: { 
      // statements; 
   } 
   break; 

   case constant_expr2: { 
      //statements; 
   } 
   break; 

   default: { 
      //statements;  
   }
   break; 
} 
参考资料

只需将值“”存储在字符串变量中,并每次将其合并即可。参考下面的代码

String originalUrl = 'https://www.example.com';
if (url == originalUrl + '/1') {

}

我喜欢Muldec的回答,因为我个人觉得switch语句读起来有点笨拙。我还喜欢使用默认值的选项,这样您就可以“某种程度上”重新定义switch语句。另外一个好处是,您可以将它作为一个表达式内联使用,并且它仍然是类型安全的…就像这样

case2(myInputValue,
  {
    "http://www.example.com/1": "example",
    "http://www.example.com/2": "another example",
    "http://www.example.com/3": "yet another one",
  }, "www.google");
案例2的代码可能是

TValue case2<TOptionType, TValue>(
  TOptionType selectedOption,
  Map<TOptionType, TValue> branches, [
  TValue defaultValue = null,
]) {
  if (!branches.containsKey(selectedOption)) {
    return defaultValue;
  }

  return branches[selectedOption];
}
t值案例2(
TopionType Selected选项,
地图分支[
TValue defaultValue=null,
]) {
如果(!branchs.containsKey(selectedOption)){
返回默认值;
}
返回分支[选择选项];
}

better way(更好的方法)是高度基于意见的。在什么方面更好?可读性?可维护性?速度?如果有更好的方法,特别是在代码较少的情况下,您的第二个案例可能会被完全删除,因为它的条件永远不会是真的…这只是一个打字错误。。当然,最后会有另一个数字。或者你可以用开关盒