43 lines
648 B
V
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
|
|
}
|