¿Es posible pasar la reference al elemento i-ésimo de una matriz primitiva?

En este momento, en algún lugar de mi código, estoy pasando una reference a una primitiva, por ejemplo, un Int

 val i = 0 

a

 fun whatever(i: KMutableProperty0<Int>) 

como

 whatever(::i) 

poder get / establecer su valor desde dentro de la function

Todo funcionó muy bien hasta ahora.

Me gustaría ahora hacer lo mismo para un i-ésimo elemento de una matriz primitiva, como un IntArray

 val arr = intArrayOf(1, 2, 3) whatever(/* passing the reference to item 2 of arr*/) 

¿Es posible?

    ¿Qué hay de pasar la reference a la propiedad arr y el índice?

     fun whatever(arr: KMutableProperty0<IntArray>, index: Int) whatever(::arr, i) 

    No es posible, ya que Java no permite operaciones con pointers en las matrices. Kotlin haciendo eso (si es posible en el nivel de bytecode) rompería la interoperabilidad.

    EDITAR : Parece que no te importan los pointers de array verdaderos , como en C, por lo que puedes crear KMutableProperty wrappers similares a los de KMutableProperty :

     class IntArrayRef(val array: IntArray, val index: Int) { fun get(): Int = array.get(index) fun set(value: Int) { array[index] = value } } fun modify(value: IntArrayRef) { value.set(4) } fun test() { val s = "abc" val arr = intArrayOf(1, 2, 3) modify(IntArrayRef(arr, 1)) } 

    Supongo que tendrías que crear manualmente un contenedor para cada tipo de matriz nativa, ya que están expuestos en el nivel de Kotlin como types no generics .