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
37
Task/Polymorphic-copy/Nim/polymorphic-copy.nim
Normal file
37
Task/Polymorphic-copy/Nim/polymorphic-copy.nim
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
type
|
||||
T = ref object of TObject
|
||||
myValue: string
|
||||
S1 = ref object of T
|
||||
S2 = ref object of T
|
||||
|
||||
method speak(x: T) = echo "T Hello ", x.myValue
|
||||
method speak(x: S1) = echo "S1 Meow ", x.myValue
|
||||
method speak(x: S2) = echo "S2 Woof ", x.myValue
|
||||
|
||||
echo "creating initial objects of types S1, S2, and T"
|
||||
var a = S1(myValue: "Green")
|
||||
a.speak
|
||||
var b = S2(myValue: "Blue")
|
||||
b.speak
|
||||
var u = T(myValue: "Blue")
|
||||
u.speak
|
||||
|
||||
echo "Making copy of a as u, colors and types should match"
|
||||
u.deepCopy(a)
|
||||
u.speak
|
||||
a.speak
|
||||
|
||||
echo "Assigning new color to u, A's color should be unchanged."
|
||||
u.myValue = "Orange"
|
||||
u.speak
|
||||
a.speak
|
||||
|
||||
echo "Assigning u to reference same object as b, colors and types should match"
|
||||
u = b
|
||||
u.speak
|
||||
b.speak
|
||||
|
||||
echo "Assigning new color to u. Since u,b references same object b's color changes as well"
|
||||
u.myValue = "Yellow"
|
||||
u.speak
|
||||
b.speak
|
||||
Loading…
Add table
Add a link
Reference in a new issue