我想用另一个字符串替换Dart中的URL字符串。示例:
if (url == "http://www.example.com/1") { home = "example"; } else if (url == "http://www.example.com/2") { home = "another example"; }
有没有更好的方法,用更少的代码,也许更快?我不得不这样做超过60次..
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];
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]; }
xoshrz7s3#
可以使用switch语句。
switch(variable_expression) { case constant_expr1: { // statements; } break; case constant_expr2: { //statements; } break; default: { //statements; } break; }
参考文献
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; } }
f87krz0w5#
只需将值“http://www.example.com”存储在字符串变量中,并每次连接即可。
String originalUrl = 'https://www.example.com'; if (url == originalUrl + '/1') { }
5条答案
按热度按时间irtuqstp1#
如果你想要更少的代码,你可以这样做:
vltsax252#
我喜欢Muldec的回答,因为我个人觉得switch语句读起来有点别扭。我也喜欢有一个默认值的选项,这样你就可以“某种程度上”重新定义switch语句。额外的好处是,你可以把它作为一个表达式内联使用,而且它仍然是类型安全的...就像这样。
case2代码可以是
xoshrz7s3#
可以使用switch语句。
参考文献
eqoofvh94#
Map
功能
f87krz0w5#
只需将值“http://www.example.com”存储在字符串变量中,并每次连接即可。