История изменений
Исправление korvin_, (текущая версия) :
А то, что не покрывает встраивание, докрывают интерфейсы.
А как же позднее связывание this (self)?
class parent = object (self)
method foo = "parent foo"
method bar = print_endline ("parent bar, " ^ self#foo)
end
class child = object
inherit parent
method foo = "child foo"
end
let () =
let a = new parent
and b = new child in
a#bar ;
b#bar
⇒
parent bar, parent foo
parent bar, child foo
—
package main
import "fmt"
type Parent struct {}
func (p *Parent) Foo() string {
return "parent foo"
}
func (p *Parent) Bar() {
fmt.Println("parent bar, " + p.Foo())
}
type Child struct {
Parent
}
func (c *Child) Foo() string {
return "child foo"
}
func main() {
a := new(Parent)
b := new(Child)
a.Bar()
b.Bar()
}
⇒
parent bar, parent foo
parent bar, parent foo
Исходная версия korvin_, :
А то, что не покрывает встраивание, докрывают интерфейсы.
А как же позднее связывание this (self)?
class parent = object (self)
method foo = "parent foo"
method bar = print_endline ("parent bar, " ^ self#foo)
end
class child = object
inherit parent
method foo = "child foo"
end
let () =
let a = new parent
and b = new child in
a#bar ;
b#bar
⇒
parent bar, parent foo
parent bar, child foo
package main
import "fmt"
type Parent struct {}
func (p *Parent) Foo() string {
return "parent foo"
}
func (p *Parent) Bar() {
fmt.Println("parent bar, " + p.Foo())
}
type Child struct {
Parent
}
func (c *Child) Foo() string {
return "child foo"
}
func main() {
a := new(Parent)
b := new(Child)
a.Bar()
b.Bar()
}
⇒
parent bar, parent foo
parent bar, parent foo