#dart
#dart
Вопрос:
как проверить тип prop при его использовании, как показано ниже
void main(){
var obj = Ball<PassData>(data: PassData(id: 1,nama: 'asdas'));
print('${obj.get()}');
}
class Ball<T>{
T data;
Ball({this.data});
String get(){
if(data is PassData){ //can't check it this way
return 'this type has ${data.id} and ${data.nama}'; //compile error
}
else{
return 'no : $data';
}
}
}
class PassData{
String nama;
int id;
PassData({this.nama,this.id});
}
при использовании свойства объекта PassData у меня возникает ошибка компиляции, подобная приведенной выше. Мне нужно получить тип свойства типа «данные». Я делаю это неправильно?
Ответ №1:
Ваша проблема не в том, что тип является общим, а в том, что переменная не является локальной переменной. Dart поддерживает только локальные переменные, поэтому выполнение if (data is PassData)
не способствует присвоению переменной / полю экземпляра data
значения a PassData
.
Попробуйте записать его как:
String get() {
var data = this.data;
if (data is PassData) {
return 'this type has ${data.id} and ${data.nama}';
} else {
return 'no: $data';
}
}
Ответ №2:
В настоящее время ваши данные имеют тип T, и ваш класс get не знает, к какому классу он принадлежит, и поэтому не может обрабатывать операции. Вы можете попробовать это:
String get(){
if(this.data is PassData){
return 'this type has ${(data as PassData).id} and ${(data as PassData).nama}';
}
else{
return 'no : $data';
}
}