123456789101112131415161718192021222324252627282930313233343536 |
- #!/usr/bin/ruby
- #
- ## https://rosettacode.org/wiki/Polymorphism
- #
- class Point(x=0, y=0) {
- }
- class Circle(x=0, y=0, r=0) {
- }
- func pp(Point obj) {
- say "Point at #{obj.x},#{obj.y}";
- }
- func pp(Circle obj) {
- say "Circle at #{obj.x},#{obj.y} with radius #{obj.r}";
- }
- pp(Point.new); # => Point at 0,0
- var p = Point.new(1, 2); # create a point
- pp(p); # => Point at 1,2
- say p.x; # => 1
- p.y += 1; # add one to y
- pp(p); # => Point at 1,3
- var c = Circle.new(4,5,6); # create a circle
- var d = c.clone; # clone it
- d.r = 7.5; # and change the radius to 7.5
- pp(c); # => Circle at 4,5 with radius 6
- pp(d); # => Circle at 4,5 with radius 7.5
|