1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #unittest {
- name: "Vector class.";
- result: 69;
- };
- class Vector {
- public var x=0;
- public var y=0;
- public var z=0;
-
- public func init (a, b, c) {
- if (!a) a = 0;
- if (!b) b = 0;
- if (!c) c = 0;
- x = a; y = b; z = c;
- }
-
- public func + (v) {
- if (v is Int) {
- return Vector(x+v, y+v, z+v);
- } else if (v is Vector) {
- return Vector(x+v.x, y+v.y, z+v.z);
- }
- return null;
- }
-
- public func - (v) {
- if (v is Int) {
- return Vector(x-v, y-v, z-v);
- } else if (v is Vector) {
- return Vector(x-v.x, y-v.y, z-v.z);
- }
- return null;
- }
-
- public func * (v) {
- if (v is Int) {
- return Vector(x*v, y*v, z*v);
- } else if (v is Vector) {
- return Vector(x*v.x, y*v.y, z*v.z);
- }
- return null;
- }
-
- public func / (v) {
- if (v is Int) {
- return Vector(x/v, y/v, z/v);
- } else if (v is Vector) {
- return Vector(x/v.x, y/v.y, z/v.z);
- }
- return null;
- }
-
- public func neg() {
- return Vector(-x, -y, -z);
- }
-
- public func sum() {
- return x+y+z;
- }
-
- public func String() {
- return "[" + x.String() + "," + y.String() + "," + z.String() + "]";
- }
- }
- func main() {
- var v1 = Vector(1,2,3); // 1,2,3 (6)
- var v2 = Vector(4,5,6); // 4,5,6 (15)
- var v3 = v1 + v2; // 5,7,9
- var v4 = v2 - v1; // 3,3,3
- var v5 = -v4; // -3,-3,-3
- var v6 = v4 / v5; // -1,-1,-1
- var v7 = v3 + v6; // 4,6,8 (18)
- var v8 = v4 * v1; // 3,6,9 (18)
- var v9 = v1 + 2; // 3,4,5 (12)
-
- // just trigger this code in order in order to trigger internal test
- var test = v9.String();
- if (test != "[3,4,5]") return false;
-
- return v1.sum() + v2.sum() + v7.sum() + v8.sum() + v9.sum();
- }
|