2017-05-31 2 views
6

Ich muss BigInteger verwenden, kann aber nichts Ähnliches in Kotlin finden.BigInteger in Kotlin

Gibt es eine alternative Klasse in Kotlin zu BigInteger von Java?

oder

sollte ich importieren Java-Klasse in Kotlin?

+0

http://docs.w3cub.com/kotlin/api/latest/jvm/stdlib/kotlin/java.math.-big-integer/ –

+0

Warum benutzt du nicht Long type? – vuhung3990

+1

@ vuhung3990 https://Stackoverflow.com/a/31748073/6156989 –

Antwort

9

java.math.BigInteger kann in Kotlin wie jede andere Java verwendet werden Klasse. Es gibt sogar helpers in stdlib, die gemeinsame Operationen einfacher zu lesen und zu schreiben machen. Sie können sogar die Helfer erweitern sich bessere Lesbarkeit zu erreichen:

import java.math.BigInteger 

fun Long.toBigInteger() = BigInteger.valueOf(this) 
fun Int.toBigInteger() = BigInteger.valueOf(toLong()) 

val a = BigInteger("1") 
val b = 12.toBigInteger() 
val c = 2L.toBigInteger() 

fun main(argv:Array<String>){ 
    println((a + b)/c) // prints out 6 
} 
3

Sie können jede der integrierten Java-Klassen von Kotlin verwenden, und Sie sollten. Sie funktionieren alle genauso wie in Java. Kotlin legt großen Wert darauf, das zu nutzen, was die Java-Plattform zu bieten hat, anstatt sie neu zu implementieren; Zum Beispiel gibt es keine Kotlin-spezifischen Sammlungen, nur einige Schnittstellen über Java-Sammlungen, und die Standardbibliothek verwendet diese Sammlungen ebenfalls.

Also ja, Sie sollten einfach java.math.BigInteger verwenden. Als Bonus werden Sie tatsächlich in der Lage sein, Anrufe statt Funktion zu verwenden, wenn Sie BigInteger von Kotlin verwenden: + statt add, - statt subtract usw.