I don’t understand why this works: val UInt.l...
# announcements
t
I don’t understand why this works: val UInt.le_ubytes:UByteArray get() { val quad = (0 until 31 step 8 ).map { shift -> (this shr shift and 0xFFu).ubyte } return quad.toUByteArray() } but this doesn’t work: val UInt.le_ubytes:UByteArray get() { val quad = (0 until 31 step 8 ).map { shift -> (this shr shift and 0xFFu).ubyte } return ubyteArrayOf(*quad) } It hates on the ubyteArrayOf() with the spread operator. It wants a UByteArray as the argument. Which is pointless, because why would I be using the ubyteArrayOf() helper if I had a UByteArray already?
e
I believe that’s because
.map()
returns a list, not an array. The spread operator only works on arrays, so the following would work:
Copy code
val UInt.le_ubytes:UByteArray get() {
    val quad = (0 until 31 step 8 ).map { shift -> (this shr shift and 0xFFu).ubyte }
    return ubyteArrayOf(*(quad.toTypedArray()))
   }
1
t
thank you. that’s the hidden bit of sauce i was looking for (spread only works on arrays, not lists)