v/vlib/v/tests/match_reference_sumtype_var...

43 lines
648 B
V

struct Player {
mut:
x int
y int
level int
}
struct Enemy {
mut:
x int
y int
damage f64
}
type PlayerOrEnemy = Enemy | Player
fn test_match_reference_sumtype_var() {
mut entity := PlayerOrEnemy(Player{10, 12, 3})
x_move := 11
y_move := 22
mut ref := &entity
match mut entity {
Player {
entity.x += x_move
entity.y += y_move
println('Player is moved to $entity.x, $entity.y and its level is $entity.level')
}
Enemy {
entity.x += x_move
entity.y += y_move
println('Enemy is moved to $entity.x, $entity.y and its damage is $entity.damage')
}
}
println(typeof(ref).name)
assert true
}