v_scratch/16_interfaces/dynamic_casts.v

34 lines
418 B
V

struct Moon{}
struct Mars{}
struct Venus{}
type World = Mars | Moon | Venus
fn (m Mars) dust_storm() bool {
return true
}
fn main(){
mut w := World(Moon{})
assert w is Moon
w = Mars{}
mars := w as Mars
if mars.dust_storm(){
println('bad weather!')
}
//w1 := World(Mars{})
if mut w is Mars{
assert typeof(w).name == typeof(Mars{}).name
if w.dust_storm(){
println('bad weather!')
}
}
}