Skip to content

Commit

Permalink
doc: move enum methods to enum section from sum types (#13843)
Browse files Browse the repository at this point in the history
  • Loading branch information
ntrel committed Mar 27, 2022
1 parent 3a4bb09 commit afdf8f5
Showing 1 changed file with 44 additions and 44 deletions.
88 changes: 44 additions & 44 deletions doc/docs.md
Expand Up @@ -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`
Expand Down Expand Up @@ -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`.
Expand Down

1 comment on commit afdf8f5

@changrui
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return match c { .one { .two } .two { .three } .three { .one } }.

Please sign in to comment.