2017-01-11 7 views
0

独自の数値型を作成することは可能ですか?組み込みスカラ数値型と比較したり、混在算術で使用することはできますか? は例えば、カスタム型とスカラ組み込み数の混在算術は可能ですか?

class UnsignedInt(private val bits :Int) extends AnyVal { 
    ... 
} 

を想定して、私はInt sのそれは等しくすることができますか? 私は(私は可能にすべきではないと思う)def ==(that :Int)を定義することができますが、私は

val (s, u) = 1 -> new UnsignedInt(1) 
s == u 

は前にあきらめる代わりに、コンパイラの私のカスタム比較を呼び出した後、真生み出すように変換を強制的にとにかく見つけることができませんそれが実行されます。私は一般的に混在した算術のダンガルを認識していますが、そのような比較ではコンパイルエラーが発生せず、直感的に書かれることが多いため、少なくとも両方のオペランドを安全に注入できるタイプにすることができます

答えて

0

Scalaでこれを行う典型的な方法は、暗黙の変換を使用することです。 this blog postはそれをうまく説明します。あなたのクラスにそのアイデアを移植することになります。そして、

object UnsignedIntImplicits { 
    implicit def Int2UnsignedInt(value:Int) = new UnsignedInt(value) 
} 

でそれを有効にしてください:

import UnsignedIntImplicits._ 
関連する問題