Перечисления
Для создания перечисления, также известное как enumerator, в Dart используется ключевое слово enum
.
В нём перечисляются весь список элементов через запятую. К сожалению, делается это без возможности задания собственных индексов.
Индекс в любом случае начинается с нуля.
enum Company{
MICROSOFT, // 0
APPLE, // 1
GOOGLE // 2
}
После этого, можно обращаться к элементам этого списка.
enum Company{
MICROSOFT, // 0
APPLE, // 1
GOOGLE // 2
}
void main(){
print(Company.MICROSOFT); // Company.MICROSFT
print(Company.MICROSOFT.index); // 0
}
Пример использования
Чаще всего перечисления используются для сравнения с какой-либо переменной.
enum Company{
MICROSOFT, // 0
APPLE, // 1
GOOGLE // 2
}
void main(){
print( getOwnerName( Company.MICROSOFT ) ); // Bill Gates
print( getOwnerName( Company.APPLE ) ); // Steve Jobs
print( getOwnerName( Company.GOOGLE ) ); // Sergey Brin
}
String getOwnerName(Company company){
switch(company){
case Company.MICROSOFT: return 'Bill Gates';
case Company.APPLE: return 'Steve Jobs';
case Company.GOOGLE: return 'Sergey Brin';
}
}
Циклы по enum в dart
Также можно пройтись циклом по значениям перечисления. Для этого надо обратиться к массиву значений списка values
.
enum Company{
MICROSOFT, // 0
APPLE, // 1
GOOGLE // 2
}
void main(){
Company.values.forEach((company){
print( company.index.toString() + ". " + getOwnerName( company ) );
});
// 0. Bill Gates
// 1. Steve Jobs
// 2. Sergey Brin
}
String getOwnerName(Company company){
switch(company){
case Company.MICROSOFT: return 'Bill Gates';
case Company.APPLE: return 'Steve Jobs';
case Company.GOOGLE: return 'Sergey Brin';
}
}