update At
Требования к платформе и версии: Common (2.2)
expect inline fun AtomicIntArray.updateAt(index: Int, transform: (Int) -> Int)
Атомарно обновляет элемент этого AtomicIntArray по указанному индексу с помощью функции transform.
Функция transform может вызываться несколько раз для повторного вычисления результата. Например, это может произойти, если целочисленное значение по указанному индексу было обновлено параллельно во время выполнения transform или из-за ложного сбоя compare-and-set. Последний случай зависит от реализации, и на него не следует полагаться.
На платформах, не поддерживающих многопоточность (JS и Wasm), эта операция реализована тривиально, и transform будет вызвана ровно один раз.
Рекомендуется, чтобы transform выполнялась быстро и не имела побочных эффектов.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicIntArray(intArrayOf(1, 2, 3))
a.updateAt(1) { currentValue -> currentValue * 10 }
println(a.toString()) // [1, 20, 3]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
expect inline fun AtomicLongArray.updateAt(index: Int, transform: (Long) -> Long)
Атомарно обновляет элемент этого AtomicLongArray по указанному индексу с помощью функции transform.
Функция transform может вызываться несколько раз для повторного вычисления результата. Например, это может произойти, если значение типа long по указанному индексу было обновлено параллельно во время выполнения transform или из-за ложного сбоя compare-and-set. Последний случай зависит от реализации, и на него не следует полагаться.
На платформах, не поддерживающих многопоточность (JS и Wasm), эта операция реализована тривиально, и transform будет вызвана ровно один раз.
Рекомендуется, чтобы transform выполнялась быстро и не имела побочных эффектов.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicLongArray(longArrayOf(1L, 2L, 3L))
a.updateAt(1) { currentValue -> currentValue * 10L }
println(a.toString()) // [1, 20, 3]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
expect inline fun <T> AtomicArray<T>.updateAt(index: Int, transform: (T) -> T)
Атомарно обновляет элемент этого AtomicArray по указанному индексу с помощью функции transform.
Функция transform может вызываться несколько раз для повторного вычисления результата. Например, это может произойти, если ссылка по указанному индексу была обновлена параллельно во время выполнения transform или из-за ложного сбоя compare-and-set. Последний случай зависит от реализации, и на него не следует полагаться.
На платформах, не поддерживающих многопоточность (JS и Wasm), эта операция реализована тривиально, и transform будет вызвана ровно один раз.
Рекомендуется, чтобы transform выполнялась быстро и не имела побочных эффектов.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicArray(arrayOf("hello", "concurrent", "world"))
a.updateAt(1) { currentValue -> currentValue.uppercase() }
println(a.toString()) // [hello, CONCURRENT, world]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
Требования к платформе и версии: JS (2.2)
actual inline fun AtomicIntArray.updateAt(index: Int, transform: (Int) -> Int)
Атомарно обновляет элемент этого AtomicIntArray по указанному индексу с помощью функции transform.
JS не поддерживает многопоточность, поэтому реализация тривиальна, а transform будет вызвана ровно один раз для вычисления результата.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicIntArray(intArrayOf(1, 2, 3))
a.updateAt(1) { currentValue -> currentValue * 10 }
println(a.toString()) // [1, 20, 3]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
actual inline fun AtomicLongArray.updateAt(index: Int, transform: (Long) -> Long)
Атомарно обновляет элемент этого AtomicLongArray по указанному индексу с помощью функции transform.
JS не поддерживает многопоточность, поэтому реализация тривиальна, а transform будет вызвана ровно один раз для вычисления результата.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicLongArray(longArrayOf(1L, 2L, 3L))
a.updateAt(1) { currentValue -> currentValue * 10L }
println(a.toString()) // [1, 20, 3]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
actual inline fun <T> AtomicArray<T>.updateAt(index: Int, transform: (T) -> T)
Атомарно обновляет элемент этого AtomicArray по указанному индексу с помощью функции transform.
JS не поддерживает многопоточность, поэтому реализация тривиальна, а transform будет вызвана ровно один раз для вычисления результата.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicArray(arrayOf("hello", "concurrent", "world"))
a.updateAt(1) { currentValue -> currentValue.uppercase() }
println(a.toString()) // [hello, CONCURRENT, world]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
Требования к платформе и версии: JVM (2.2), Native (2.2)
actual inline fun AtomicIntArray.updateAt(index: Int, transform: (Int) -> Int)
Атомарно обновляет элемент этого AtomicIntArray по указанному индексу с помощью функции transform.
Функция transform может вызываться несколько раз для повторного вычисления результата. Например, это может произойти, если целочисленное значение по указанному индексу было обновлено параллельно во время выполнения transform или из-за ложного сбоя compare-and-set. Последний случай зависит от реализации, и на него не следует полагаться.
Рекомендуется, чтобы transform выполнялась быстро и не имела побочных эффектов.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicIntArray(intArrayOf(1, 2, 3))
a.updateAt(1) { currentValue -> currentValue * 10 }
println(a.toString()) // [1, 20, 3]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
actual inline fun AtomicLongArray.updateAt(index: Int, transform: (Long) -> Long)
Атомарно обновляет элемент этого AtomicLongArray по указанному индексу с помощью функции transform.
Функция transform может вызываться несколько раз для повторного вычисления результата. Например, это может произойти, если значение типа long по указанному индексу было обновлено параллельно во время выполнения transform или из-за ложного сбоя compare-and-set. Последний случай зависит от реализации, и на него не следует полагаться.
Рекомендуется, чтобы transform выполнялась быстро и не имела побочных эффектов.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicLongArray(longArrayOf(1L, 2L, 3L))
a.updateAt(1) { currentValue -> currentValue * 10L }
println(a.toString()) // [1, 20, 3]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
actual inline fun <T> AtomicArray<T>.updateAt(index: Int, transform: (T) -> T)
Атомарно обновляет элемент этого AtomicArray по указанному индексу с помощью функции transform.
Функция transform может вызываться несколько раз для повторного вычисления результата. Например, это может произойти, если ссылка по указанному индексу была обновлена параллельно во время выполнения transform или из-за ложного сбоя compare-and-set. Последний случай зависит от реализации, и на него не следует полагаться.
Рекомендуется, чтобы transform выполнялась быстро и не имела побочных эффектов.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicArray(arrayOf("hello", "concurrent", "world"))
a.updateAt(1) { currentValue -> currentValue.uppercase() }
println(a.toString()) // [hello, CONCURRENT, world]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
Требования к платформе и версии: Wasm-JS (2.2), Wasm-WASI (2.2)
actual inline fun AtomicIntArray.updateAt(index: Int, transform: (Int) -> Int)
Атомарно обновляет элемент этого AtomicIntArray по указанному индексу с помощью функции transform.
Wasm не поддерживает многопоточность, поэтому реализация тривиальна, а transform будет вызвана ровно один раз для вычисления результата.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicIntArray(intArrayOf(1, 2, 3))
a.updateAt(1) { currentValue -> currentValue * 10 }
println(a.toString()) // [1, 20, 3]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
actual inline fun AtomicLongArray.updateAt(index: Int, transform: (Long) -> Long)
Атомарно обновляет элемент этого AtomicLongArray по указанному индексу с помощью функции transform.
Wasm не поддерживает многопоточность, поэтому реализация тривиальна, а transform будет вызвана ровно один раз для вычисления результата.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicLongArray(longArrayOf(1L, 2L, 3L))
a.updateAt(1) { currentValue -> currentValue * 10L }
println(a.toString()) // [1, 20, 3]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
actual inline fun <T> AtomicArray<T>.updateAt(index: Int, transform: (T) -> T)
Атомарно обновляет элемент этого AtomicArray по указанному индексу с помощью функции transform.
Wasm не поддерживает многопоточность, поэтому реализация тривиальна, а transform будет вызвана ровно один раз для вычисления результата.
Исключения
если index выходит за пределы этого массива.
Примеры
import kotlin.concurrent.atomics.*
import kotlin.concurrent.atomics.AtomicArray
import kotlin.test.assertFailsWith
fun main() {
//sampleStart
val a = AtomicArray(arrayOf("hello", "concurrent", "world"))
a.updateAt(1) { currentValue -> currentValue.uppercase() }
println(a.toString()) // [hello, CONCURRENT, world]
// The index is out of array bounds
// a.updateAt(10) { it } // will fail with IndexOutOfBoundsException
//sampleEnd
}
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.concurrent.atomics/update-at.html