kotlin проблем с областями действия верхнего уровня - PullRequest
0 голосов
/ 21 января 2020

При Kotlin область видимости на верхнем уровне (т. Е. Вне класса) публикуется c и stati c, верно?
Мне нужны файлы, где у одного есть класс данных, а у другого - пытается получить к нему доступ.

Файл1:

package com.test

data class Xyz (val s1:String, val s2:String)

Файл2:

package com.test

val myList : List<Xyz> = File1.theList

Моя ошибка:

/home/sjs/Test/src/com/test/File2.kt
Error:(3, 26) Kotlin: Unresolved reference: File1

Файлы находятся в тот же каталог и тот же пакет, поэтому мне не нужно ничего импортировать, верно? Кроме того, я попытался импортировать «import File1. », а также «import com.test.File1. », но ничего не получается.

Я перепробовал все, что мог придумать, но первый файл не может видеть второй. Я в полном замешательстве.

Я использую IDE Intellij. ПРИМЕЧАНИЕ. Обновил код, как указано ниже, и компилятор пожаловался на необходимость использования метода получения / установки, который теперь имеется в коде:

File1:

package com.test

data class Xyz (val s1:String, val s2:String)

val theList : List<Xyz>
    get() = buildList()

fun buildList() : List<Xyz> {
    var myList = mutableListOf<Xyz>()
    if (theList.size > 0) return theList;
    val l1 = arrayListOf<String>("1", "2", "3")
    val l2 = arrayListOf<String>("a", "b", "c")
    for (i in 0..l1.lastIndex)
        myList.add(Xyz(l1[i], l2[i]))
    return myList;
}

File2:

package com.test

val myList : List<Xyz> theList

Ошибка:

/home/sjs/Test/src/com/test/File2.kt
Error:(3, 24) Kotlin: Property getter or setter expected

Итак - теперь он не видит геттер () ??

1 Ответ

0 голосов
/ 21 января 2020

Эти файлы находятся в одном пакете, поэтому вам не нужно их импортировать. Также вам не нужно указывать имя файла:

val myList : List<Xyz> = theList

(если theList является свойством верхнего уровня в File1)

В общем, имя .kt Файл используется для вызова чего-либо только при вызове Kotlin функций / свойств верхнего уровня из Java кода.

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