Delegates: Difference between revisions
Content added Content deleted
(Adds Clojure solution) |
(Added Julia language) |
||
Line 1,216: | Line 1,216: | ||
document.write(a.operation() + "\n") ; |
document.write(a.operation() + "\n") ; |
||
}</lang> |
}</lang> |
||
=={{header|Julia}}== |
|||
'''Module''': |
|||
<lang julia>module Delegates |
|||
export Delegator, Delegate |
|||
struct Delegator{T} |
|||
delegate::T |
|||
end |
|||
struct Delegate end |
|||
operation(x::Delegator) = thing(x.delegate) |
|||
thing(::Any) = "default implementation" |
|||
thing(::Delegate) = "delegate implementation" |
|||
end # module Delegates</lang> |
|||
'''Main''': |
|||
<lang julia>using .Delegates |
|||
a = Delegator(nothing) |
|||
b = Delegator("string") |
|||
d = Delegate() |
|||
c = Delegator(d) |
|||
@show Delegates.operation(a) |
|||
@show Delegates.operation(b) |
|||
@show Delegates.operation(c)</lang> |
|||
{{out}} |
|||
<pre>Delegates.operation(a) = "default implementation" |
|||
Delegates.operation(b) = "default implementation" |
|||
Delegates.operation(c) = "delegate implementation"</pre> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |