ScalaのBigIntが使いやすい

ScalaにはBigIntというクラスが最初から提供されている。
これがJavaのBigInteger相当のもの(実際BigIntegerをラップしている)だが、それよりも格段に使いやすい。
ポイントをメモしておく。


object ScalaList {
	def main(args: Array[String]): Unit = {
		val b1 = BigInt(100)
		val b2 = BigInt(200)

		println(b1 * b2)	

		println(b1 + b2)
		
		println(b1 - b2)
		
		println(b1 & b2)
		
		println(b1 ^ b2)
	}
}


  • 暗黙の型変換(implicit def int2bigInt)が定義されているので、BigIntと通常の数値を演算するときにいちいちBigIntに変換する記述が必要ない。
object ScalaList {
	def main(args: Array[String]): Unit = {
		val b1 = BigInt(100)
		val b2 = BigInt(200)
		println(b1 * b2 + 500)	
	}
}
  • 注意点:isValid○○系メソッドにバグあり?

自分が使ってる2.9.3もhttp://togetter.com/li/189946と同じ現象が起こった。