Неразрешенная ссылка при компиляции, но доступная Intellisense - PullRequest
1 голос
/ 10 июля 2019

Я работаю над библиотекой обработки звука для Flutter, и у меня возникла проблема с одним из моих родных классов Kotlin. В приведенном ниже примере кода компилятор жалуется, что вызов copyInto в массиве samples является неразрешенной ссылкой. Насколько я могу судить, я убедился, что это IntArray, а Intellisense в Android Studio даже вызывает copyInto в качестве опции, когда я набираю «samples».

Вот мой код класса:

package com.----.audio_channels

import kotlin.math.abs
import kotlin.math.min

abstract class AudioTrackBuffer constructor(val loop: Boolean) {
    var position: Int = 0

    abstract fun getSamples(sampleCount: Int): IntArray
    abstract fun isComplete(): Boolean
    abstract fun dispose()
}

class RawAudioBuffer constructor(private val samples: IntArray, loop: Boolean, delay: Int): AudioTrackBuffer(loop) {

    init {
        position = -delay
    }

    override fun getSamples(sampleCount: Int): IntArray {
        val slice: IntArray

        if (position < 0) {
            slice = IntArray(sampleCount) { 0 }

            if (position + sampleCount < 0) {
                position += sampleCount
                return slice
            }

            val offset = abs(position)
            samples.copyInto(slice, offset, 0, min(sampleCount - offset, samples.size)) // Error
        } else {
            slice = samples.copyOfRange(position, min(position + sampleCount, samples.size))
            position += slice.size
        }

        return slice
    }

    override fun isComplete(): Boolean {
        return position >= samples.size
    }

    override fun dispose() {}
}

А вот и ошибка компиляции:

Launching lib\main.dart on SM N960U in debug mode...
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
e: E:\flutter\workspace\audio_channels\android\src\main\kotlin\com\----\audio_channels\AudioTrackBuffer.kt: (33, 21): Unresolved reference: copyInto

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':audio_channels:compileDebugKotlin'.
> Compilation error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
Finished with error: Gradle task assembleDebug failed with exit code 1

1 Ответ

3 голосов
/ 16 июля 2019

Функция copyInto доступна с kotlin 1.3. В настоящее время вы используете 1.2.71, тогда вы получите ошибку Unresolved reference: copyInto.
Поэтому, обновите версию своего приложения kotlin до> = 1.3, чтобы решить вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...