flutter dart 为很多其他的事情做准备

0aydgbwb  于 2023-04-22  发布在  Flutter
关注(0)|答案(5)|浏览(110)

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

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

有没有更好的方法,用更少的代码,也许更快?我不得不这样做超过60次..

irtuqstp

irtuqstp1#

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

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

vltsax252#

我喜欢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, TValue>(
  TOptionType selectedOption,
  Map<TOptionType, TValue> branches, [
  TValue defaultValue = null,
]) {
  if (!branches.containsKey(selectedOption)) {
    return defaultValue;
  }

  return branches[selectedOption];
}
xoshrz7s

xoshrz7s3#

可以使用switch语句。

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

   case constant_expr2: { 
      //statements; 
   } 
   break; 

   default: { 
      //statements;  
   }
   break; 
}

参考文献

eqoofvh9

eqoofvh94#

Map

var mapper = {
                  'discountCode1': 0.5,
                  'discountCode2': 0.7,
                  'discountCode3': 0.8,
                };

功能

double getDiscount(double price, String discountCode) {
                  if (mapper.containsKey(discountCode)) {
                    return mapper[discountCode]! * price;
                  } else {
                    return price;
                  }
                }
f87krz0w

f87krz0w5#

只需将值“http://www.example.com”存储在字符串变量中,并每次连接即可。

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

}

相关问题