Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
23
Task/Inheritance-Multiple/E/inheritance-multiple-1.e
Normal file
23
Task/Inheritance-Multiple/E/inheritance-multiple-1.e
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
def minherit(self, supers) {
|
||||
def forwarder match [verb, args] {
|
||||
escape __return {
|
||||
if (verb == "__respondsTo") {
|
||||
def [verb, arity] := args
|
||||
for super ? (super.__respondsTo(verb, arity)) in supers {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
} else if (verb == "__getAllegedType") {
|
||||
# XXX not a complete implementation
|
||||
return supers[0].__getAllegedType()
|
||||
} else {
|
||||
def arity := args.size()
|
||||
for super ? (super.__respondsTo(verb, arity)) in supers {
|
||||
return E.call(super, verb, args)
|
||||
}
|
||||
throw(`No parent of $self responds to $verb/$arity`)
|
||||
}
|
||||
}
|
||||
}
|
||||
return forwarder
|
||||
}
|
||||
23
Task/Inheritance-Multiple/E/inheritance-multiple-2.e
Normal file
23
Task/Inheritance-Multiple/E/inheritance-multiple-2.e
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
def makeCamera(self) {
|
||||
return def camera extends minherit(self, []) {
|
||||
to takesPictures() { return true }
|
||||
}
|
||||
}
|
||||
|
||||
def makeMobilePhone(self) {
|
||||
return def mobilePhone extends minherit(self, []) {
|
||||
to makesCalls() { return true }
|
||||
to internalMemory() { return 64*1024 }
|
||||
}
|
||||
}
|
||||
|
||||
def makeCameraPhone(self) {
|
||||
return def cameraPhone extends minherit(self, [
|
||||
makeCamera(self),
|
||||
makeMobilePhone(self),
|
||||
]) {
|
||||
to internalMemory() {
|
||||
return super.internalMemory() + 32 * 1024**2
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Task/Inheritance-Multiple/E/inheritance-multiple-3.e
Normal file
3
Task/Inheritance-Multiple/E/inheritance-multiple-3.e
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
? def p := makeCameraPhone(p)
|
||||
> [p.takesPictures(), p.makesCalls(), p.internalMemory()]
|
||||
# value: [true, true, 33619968]
|
||||
Loading…
Add table
Add a link
Reference in a new issue