Pozostawanie w języku Scala, konwersja Long
do BigInt
okazuje się być prosta:
var myLong : Long = Long.MaxValue
var myBigInt : BigInt = myLong
myBigInt.toString(36)
wyjście jest:
myLong: Long = 9223372036854775807
myBigInt: scala.math.BigInt = 9223372036854775807
res199: String = 1y2p0ij32e8e7
one sposób doszedłem do tematu był jako programista Java i Scala początkujący (czytając rozdział 1 "Scala for the Impatient.pdf"). Powyższe odpowiedzi zadziałały, ale wydawały się dziwne. Konieczność wskoczenia do ziemi Javy na taką podstawową konwersję wydawała się mniej poprawna, szczególnie gdy BigInt
miał wszystkie rzeczy. Po zapoznaniu się ze skaladoc i odpowiedziami powyżej, nastąpiło kilka niepowodzeń.
Mój największy niepowodzenie polegało na tym, że użyłem toInt()
, który straszliwie obciął myLong
. Poddać się, ostatnia próba wydawała się tak prosta i intuicyjna, że prawie jej nie wypróbowałem: myBigInt = myLong
. Być może pewnego dnia Long
będzie bogatszy i zrozumiem toBigInt
... to był mój pierwszy niepowodzenie w podróży.
Po prostu wiedziałeś, że musisz iść do Long? Próbuję dostać się do scala bez doświadczenia java i mam wrażenie, że nie wiem, gdzie znaleźć odpowiedzi czasami ... Oto co otrzymałem: 'def hasher (id: Long): String = { java.lang.Long.toString (id, 36) } ' Dziękuję Josh! – AKnox
@AKnox - Wiele funkcji pochodzi z Java, a nie z replikacji; zawsze warto sprawdzić tam również odpowiednią klasę (jeśli taka istnieje). Co więcej, wydaje się to być wyjątkowo złym wyborem dla funkcji mieszania, ale może masz na myśli coś niestandardowego przez "hash". –
Czy wiesz, czy istnieje sposób, aby zrobić coś przeciwnego? Czytanie z bazy n do długiego? –