Polymorphic copy: Difference between revisions
Content added Content deleted
No edit summary |
(add E example) |
||
Line 114: | Line 114: | ||
} |
} |
||
</lang> |
</lang> |
||
=={{header|E}}== |
|||
In E, a generic copy for all objects can be built out of the serialization facility, by connecting an object recognizer to an object builder without even using any intermediate serialized form: |
|||
<lang e>def deSubgraphKit := <elib:serial.deSubgraphKit> |
|||
def copy(object) { |
|||
return deSubgraphKit.recognize(object, deSubgraphKit.makeBuilder()) |
|||
}</lang> |
|||
Since E does not have any static dispatch, this cannot be non-polymorphic without also being non-generic. An example showing that it does indeed make copies. |
|||
<lang e>? def a := [1].diverge() |
|||
# value: [1].diverge() |
|||
? def b := copy(a) |
|||
# value: [1].diverge() |
|||
? b.push(2) |
|||
? a |
|||
# value: [1].diverge() |
|||
? b |
|||
# value: [1, 2].diverge()</lang> |
|||
(When I have time I will design a usage example which better conforms to the task description. --[[User:Kevin Reid|Kevin Reid]] 04:12, 1 March 2009 (UTC)) [[Category:E examples needing attention]] |
|||
=={{header|Java}}== |
=={{header|Java}}== |