"dart"有很多替代方案来替代大量的if/else/elseif。

17 浏览
0 Comments

"dart"有很多替代方案来替代大量的if/else/elseif。

我想用另一个字符串在Dart中替换URL字符串。

例如:

if (url == "http://www.example.com/1") {
home = "example";
} else if (url == "http://www.example.com/2") {
home = "another example";
}

难道没有更好的方式,更少的代码且可能更快吗?我需要做这个任务60多次...

admin 更改状态以发布 2023年5月21日
0
0 Comments

我喜欢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");

case2代码可以是这样的

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

0
0 Comments

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

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];

0