Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/Delegates/NGS/delegates.ngs
Normal file
40
Task/Delegates/NGS/delegates.ngs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
type Delegator
|
||||
|
||||
F init(d:Delegator) d.delegate = null
|
||||
|
||||
F default_impl(d:Delegator) 'default implementation'
|
||||
|
||||
F operation(d:Delegator) default_impl(d)
|
||||
|
||||
F operation(d:Delegator) {
|
||||
guard defined thing
|
||||
guard thing is Fun
|
||||
try {
|
||||
d.delegate.thing()
|
||||
}
|
||||
catch(e:ImplNotFound) {
|
||||
# Might be unrelated exception, so check and optionally rethrow
|
||||
e.callable !== thing throws e
|
||||
default_impl(d)
|
||||
}
|
||||
}
|
||||
|
||||
F operation(d:Delegator) {
|
||||
guard d.delegate is Null
|
||||
default_impl(d)
|
||||
}
|
||||
|
||||
|
||||
a = Delegator()
|
||||
echo(a.operation())
|
||||
|
||||
# There is no method thing(s:Str)
|
||||
a.delegate = "abc"
|
||||
echo(a.operation())
|
||||
|
||||
# ... now there is method thing(s:Str)
|
||||
F thing(s:Str) 'delegate implementation'
|
||||
echo(a.operation())
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue