Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: samples/metamethods.nut
- Revision:
- 0:97a4f8cc534c
diff -r 000000000000 -r 97a4f8cc534c samples/metamethods.nut
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/samples/metamethods.nut Tue Dec 16 10:20:34 2014 +0000
@@ -0,0 +1,115 @@
+
+local base_vec={
+ function _add(n)
+ {
+ return {
+ x=x+n.x,
+ y=y+n.y,
+ z=z+n.z,
+ }
+ }
+ function _sub(n)
+ {
+ return {
+ x=x-n.x,
+ y=y-n.y,
+ z=z-n.z,
+ }
+ }
+ function _div(n)
+ {
+ return {
+ x=x/n.x,
+ y=y/n.y,
+ z=z/n.z,
+ }
+ }
+ function _mul(n)
+ {
+ return {
+ x=x*n.x,
+ y=y*n.y,
+ z=z*n.z,
+ }
+ }
+ function _modulo(n)
+ {
+ return {
+ x=x%n,
+ y=y%n,
+ z=z%n,
+ }
+ }
+ function _typeof() {return "vector";}
+ function _get(key)
+ {
+ if(key==100)
+ {
+ return test_field;
+ }
+ },
+ function _set(key,val)
+ {
+ ::print("key = "+key+"\n");
+ ::print("val = "+val+"\n")
+ if(key==100)
+ {
+ return test_field=val;
+ }
+ }
+ test_field="nothing"
+}
+
+function vector(_x,_y,_z)
+{
+ return {x=_x,y=_y,z=_z }.setdelegate(base_vec);
+}
+////////////////////////////////////////////////////////////
+
+local v1=vector(1.5,2.5,3.5);
+local v2=vector(1.5,2.5,3.5);
+
+local r=v1+v2;
+
+
+foreach(i,val in r)
+{
+ print(i+" = "+val+"\n");
+}
+
+r=v1*v2;
+
+foreach(i,val in r)
+{
+ print(i+" = "+val+"\n");
+}
+
+r=v1/v2;
+
+foreach(i,val in r)
+{
+ print(i+" = "+val+"\n");
+}
+
+r=v1-v2;
+
+foreach(i,val in r)
+{
+ print(i+" = "+val+"\n");
+}
+
+r=v1%2;
+
+foreach(i,val in r)
+{
+ print(i+" = "+val+"\n");
+}
+
+print(v1[100]+"\n");
+v1[100]="set SUCCEEDED";
+print(v1[100]+"\n");
+
+if(typeof v1=="vector")
+ print("<SUCCEEDED>\n");
+else
+ print("<FAILED>\n");