Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

dart alternate for a lot of if elseiif

I want to replace an URL String in Dart with another String. Example:

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

Isn't there a better way with less code and maybe faster? I'd have to do this over 60 times..

like image 972
Jona Avatar asked Jul 29 '19 07:07

Jona


2 Answers

If you want less code, you can do somtehing like this :

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];
like image 156
Muldec Avatar answered Sep 27 '22 21:09

Muldec


I like Muldec's answer as I personally find switch statements to be a bit awkward to read. I also like the option of having a default so you could 'kind of' redefine the switch statement. The additional benefit is that you can use it inline as an expression and it is still typesafe...like this.

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");

The case2 code could be

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

  return branches[selectedOption];
}
like image 38
atreeon Avatar answered Sep 27 '22 21:09

atreeon