#flutter #dart
#flutter #dart
Вопрос:
Например, учитывая псевдокод
getResult(){
List lst=[1,"5",4];
String str="five";
if(condition){
return lst;
}
else{
return str;
}
}
может ли что-то подобное быть достигнуто в flutter.
Комментарии:
1. Вы пробовали сами?
2. нет … потому что мне нужно будет указать, какой тип она вернет перед именем функции, поэтому я запутался, на котором я укажу строку или список, например: String func(){}
Ответ №1:
Да, что-то подобное можно сделать в dart / flutter. Кстати, ваш псевдокод будет работать, если вы объявите bool condition;
пример:
getResult(){
List lst=[1,"5",4];
var str = 1;
if(str.runtimeType == String){
print(lst[1]);
} else if(str.runtimeType == int){
print('${lst[0]}, ${lst[2]}');
}
}
В этом примере результат будет зависеть от типа переменной str. Конечно, вы также можете использовать другие типы для сравнения (double, bool)
Комментарии:
1. не могли бы вы показать мне, как определение такой функции будет выглядеть в реальном коде dart
2. Я добавил это в ответ, взгляните.
3. ваш код напечатает выходные данные.. но я хочу получить выходные данные и использовать их в других вычислениях
4. вы можете просто заменить print на return
Ответ №2:
Ответ на вопрос — да. Вы можете определить функцию как возвращающую dynamic
и возвращать любой тип, который вы хотите.
Вы должны это сделать? Вероятно, нет. Посмотрите на создание типа объединения. Тип объединения, встроенный в Dart, является FutureOr
классом, который может представлять будущий или разрешенный тип. Замороженный пакет может помочь генерировать типы объединения без лишней суеты.