URL: http://atnd.org/events/34622
今日で15日目ですね。あと10日でクリスマスですよ。
UnityScriptでもできるそうなので、Booで演算子のオーバーロードしたいと思います。
何かといいますと、
あるクラスの2つの値が格納された時に、
そのインスタンス同士で演算をしたいのです。
「+」や「-」などで計算を行えるようにしたいということです。
例えばUnityのVector3の値+Vector3の値ができるようなものです。
UnityScriptでのコードはこちらを参考にしました
http://d.hatena.ne.jp/tanku/20120606/1338999149
C#のドキュメントはこちらにあります
http://msdn.microsoft.com/en-us/library/ms229032%28VS.80%29.aspx
まずOverloadOperatorクラスを作ります。
・OverloadOperator.boo
class OverloadOperator: public mA as int = 0 public mB as int = 0 def constructor(a as int, b as int): mA = a mB = b static def op_Addition(a as OverloadOperator, b as OverloadOperator): return OverloadOperator(a.mA + b.mA, a.mB + b.mB)
op_Additionが足し算を実現するものです。
実際の計算はこちらです。参考にしたサイトをBooにポートしただけですが。
import UnityEngine class Test (MonoBehaviour): def Start (): a = OverloadOperator(10, 200) b = OverloadOperator(30, 20) c = a + b Debug.Log("a:"+a.mA+","+a.mB + " b:"+b.mA+","+b.mB + " c:"+c.mA+","+c.mB)
こうするとログに
a:10,200 b:30,20 c:40,220
がでるはずです。
a + bが実現できて、cの値にはaとbのそれぞれの2値が足し算できるってわけです。
引き算はop_Subtractionを使ったりいろいろあるので試したら面白いと思います。
では、また次の方へ!次も僕なら例外処理とかクロージャやりますよ。