annotation Flags

Overview

An enum can be marked with @[Flags]. This changes the default values. The first constant's value is 1, and successive constants are multiplied by 2.

@[Flags]
enum IOMode
  Read  # 1
  Write # 2
  Async # 4
end

(IOMode::Write | IOMode::Async).value # => 6
(IOMode::Write | IOMode::Async).to_s  # => "Write | Async"

Defined in:

annotations.cr