diff --git a/doc/docs.md b/doc/docs.md index 570881993e..48dd4bdbdb 100644 --- a/doc/docs.md +++ b/doc/docs.md @@ -3095,6 +3095,50 @@ Output: `Grocery IDs: 0, 5, 6`. Operations are not allowed on enum variables; they must be explicitly cast to `int`. +Enums can have methods, just like structs. + +```v +enum Cycle { + one + two + three +} + +fn (c Cycle) next() Cycle { + match c { + .one { + return .two + } + .two { + return .three + } + .three { + return .one + } + } +} + +mut c := Cycle.one +for _ in 0 .. 10 { + println(c) + c = c.next() +} +``` + +Output: +``` +one +two +three +one +two +three +one +two +three +one +``` + ### Sum types A sum type instance can hold a value of several different types. Use the `type` @@ -3145,50 +3189,6 @@ fn main() { } ``` -Enums can have methods, just like structs - -```v -enum Cycle { - one - two - three -} - -fn (c Cycle) next() Cycle { - match c { - .one { - return .two - } - .two { - return .three - } - .three { - return .one - } - } -} - -mut c := Cycle.one -for _ in 0 .. 10 { - println(c) - c = c.next() -} -``` - -Output: -``` -one -two -three -one -two -three -one -two -three -one -``` - #### Dynamic casts To check whether a sum type instance holds a certain type, use `sum is Type`.