enum

Une déclaration enum dans une lib déclare une enum C:

lib X
  # En C:
  #
  #  enum SomeEnum {
  #    Zero,
  #    One,
  #    Two,
  #    Three,
  #  };
  enum SomeEnum
    Zero
    One
    Two
    Three
  end
end

Comme en C, le premier membre d'une enum a une valeur de zéro et chaque valeur successive est incrémentée de un.

Pour utiliser une valeur:

X::SomeEnum::One #=> One

Vous pouvez spécifier la valeur d'un membre:

lib X
  enum SomeEnum
    Ten = 10
    Twenty = 10 * 2
    ThirtyTwo = 1 << 5
  end
end

Comme vous pouvez le voir, des expressions mathématiques de base sont autorisées pour la valeur d'un membre: +, -, *, /, &, |, <<, >> et %.

Le type d'un membre enum est Int32 par defaut, même si vous spécifiez un type différent dans une valeur constante:

lib X
  enum SomeEnum
    A = 1_u32
  end
end

X::SomeEnum #=> 1_i32

Néanmoins, vous pouvez changer ce type par défaut:

lib X
  enum SomeEnum : Int8
    Zero,
    Two = 2
  end
end

X::SomeEnum::Zero #=> 0_i8
X::SomeEnum::Two  #=> 2_i8

Vous pouvez utiliser une enum comme type dans un argument de fun ou des membres struct ou union:

lib X
  enum SomeEnum
    One
    Two
  end

  fun some_fun(value : SomeEnum)
end

results matching ""

    No results matching ""