Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 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