2017-05-31 20 views
6

Potrzebuję skorzystać z BigInteger, ale nie mogę znaleźć niczego podobnego w kotlinach.BigInteger w Kotlin

Czy istnieje inna klasa w kotlince do BigInteger java?

lub

należy zaimportować klasę java w Kotlin?

+0

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

+0

dlaczego nie używasz typu Long? – vuhung3990

+1

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

Odpowiedz

9

java.math.BigInteger może być stosowany w Kotlin, jak każdy inny Java klasa. Istnieje nawet helpers in stdlib, które ułatwiają czytanie i zapis zwykłych operacji. Można nawet przedłużyć sobie pomocników w celu osiągnięcia większej czytelności:

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

Możesz używać dowolnej z wbudowanych klas Java z Kotlin i powinieneś. Wszystkie będą działały dokładnie tak samo, jak w Javie. Kotlin stawia sobie za cel wykorzystanie oferty platformy Java zamiast ponownego jej wdrażania; na przykład nie ma żadnych konkretnych kolekcji Kotlin, tylko niektóre interfejsy w górnej części kolekcji Java, a biblioteka standardowa również korzysta z tych kolekcji.

Tak, powinieneś po prostu użyć java.math.BigInteger. Jako bonus, można rzeczywiście być w stanie po użyciu BigInteger z Kotlin używać operatorów zamiast wywołania funkcji: + zamiast add, - zamiast subtract itp