Дротик чередуется много если
Я хочу заменить строку URL в Dart другой строкой. Пример:
if (url == "http://www.example.com/1") {
home = "example";
} else if (url == "http://www.example.com/2") {
home = "another example";
}
Разве нет лучшего способа с меньшим количеством кода и, возможно, быстрее? Я должен был бы сделать это более 60 раз..
5 ответов
Если вам нужно меньше кода, вы можете сделать что-то вроде этого:
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. Дополнительным преимуществом является то, что вы можете использовать его в качестве выражения, и он все еще безопасен для типов... вот так.
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];
}
Вы можете использовать оператор switch.
switch(variable_expression) {
case constant_expr1: {
// statements;
}
break;
case constant_expr2: {
//statements;
}
break;
default: {
//statements;
}
break;
}
Ссылки
Карта
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;
}
}
Просто сохраните значение " http://www.example.com/" в строковой переменной и объединяйте каждый раз. См. Ниже код
String originalUrl = 'https://www.example.com';
if (url == originalUrl + '/1') {
}