Каков идиоматический способ создания и использования Перечней в Балерине?
Нашли здесь некоторые доказательства того, что enum был поддержан в Ballerina в один момент, но, похоже, он был удален. Кто-нибудь знает о рекомендованном / поддерживаемом / идиоматическом способе работы с перечисляемыми значениями в Ballerina?
1 ответ
Да, мы удалили тип enum из языка некоторое время назад. Теперь вы можете в общем случае определять перечисляемые значения, используя константы и тип объединения.
// Following declarations declare a set of compile-time constants.
// I used the int value for this example. You could even do const SUN = "sun".
const SUN = 0;
const MON = 1;
const TUE = 2;
const WED = 3;
const THU = 4;
const FRI = 5;
const SAT = 6;
// This defines a new type called "Weekday"
type Weekday SUN | MON | TUE | WED | THU | FRI | SAT;
function play() {
Weekday wd1 = WED;
Weekday wd2 = 6;
// This is a compile-time error, since the possible values
// which are compatible with the type "Weekday" type are 0, 1, 2, 3, 4, 5, and 6
Weekday wd3 = 8;
}
Позвольте мне объяснить, как это работает в соответствии со спецификацией языка. Рассмотрим следующее определение типа. Вы можете назначить возможные целочисленные значения, а также логические значения (true
или же false
) к переменной типа IntOrBoolean
,
type IntOrBoolean int | boolean;
IntOrBoolean v1 = 1;
IntOrBoolean v2 = false;
Кроме того, вы можете определить новое определение типа, которое содержит только несколько значений, таких как это. Вот 0
обозначает тип синглтона, который имеет значение 0
а также 1
обозначает другой тип синглтона, который имеет значение 1
, Тип Singleton - это тип, который имеет только одно значение в своем наборе значений.
type ZeroOrOne 0 | 1;
С этим пониманием мы можем переписать наш Weekday
напечатайте следующим образом.
type Weekday 0 | 1 | 2 | 3 | 4 | 5| 6;
Когда вы определяете постоянную времени компиляции, такую как const SUN = 0
тип переменной SUN
не является int
, но одиночный тип со значением 0
,