I tried :
Code: Select all
class _Array
{
test()
{
return "ok"
}
}
Array.base := _Array
msgbox(Array.test()) ; doesn't work
Code: Select all
class Array extends _Array
{
}
Code: Select all
class _Array
{
test()
{
return "ok"
}
}
Array.base := _Array
msgbox(Array.test()) ; doesn't work
Code: Select all
class Array extends _Array
{
}
Code: Select all
Array.Prototype.DefineMethod('extensionMethod', this => (/* implementation details */))
Code: Select all
class Default {
defaultMethod() => ''
}
class Extension extends Default {
extensionMethod() => ''
}
Default.Prototype := Extension.Prototype
D := new Default()
MsgBox D.__Class ; Extension
MsgBox D.HasMethod('defaultMethod') ; true
MsgBox D.HasMethod('extensionMethod') ; true
Code: Select all
class Extension extends Array {
extensionMethod() => ''
}
Array.Prototype := Extension.Prototype
Array(Args*) => Array.New(Args*)
A := []
MsgBox A.__Class ; Array
MsgBox A.HasMethod('Pop') ; true
MsgBox A.HasMethod('extensionMethod') ; true
Code: Select all
class Extension extends Array {
extensionMethod() => ''
extensionProp => 42
}
ExtendDef(obj, ext) {
for name, method in ext.OwnMethods()
obj.DefineMethod(name, method)
for name in ext.OwnProps()
if desc := ext.GetOwnPropDesc(name)
obj.DefineProp(name, desc)
}
Class.Prototype.DefineMethod("ExtendDef", (this, ext) => (
ExtendDef(this.Prototype, ext.Prototype)
))
Array.ExtendDef(Extension)
A := []
MsgBox A.__Class ; Array
MsgBox A.HasMethod('Pop') ; true
MsgBox A.HasMethod('extensionMethod') ; true
MsgBox A.extensionProp ; 42
Code: Select all
for name, method in Extension.Prototype.OwnMethods()
Array.Prototype.DefineMethod(name, method)
Yours shows Extension, not Array.MsgBox A.__Class ; Array
Users browsing this forum: Descolada, Draken, Hansielein, niCode, thqby and 30 guests