Kotlin - Что делает объект-компаньон весело? - PullRequest
4 голосов
/ 05 ноября 2019

Объявление « статической » функции в Kotlin выполняется с помощью:

companion object {
    fun classFoo() {
        //do something
    }
}

Однако я ошибочно кодирую

companion object fun classFoo() {
     //do something
}

Ожидается код для выполнениято же самое, если требовалась только одна статическая функция.

Компилятор об этом не спорит, и, похоже, он действителен, поскольку компилятор ожидает имя и параметры fun. Но я так и не нашел, как вызвать эту функцию из другого класса.

Что делает эта форма companion object fun? нет доступных документов по этому поводу.

1 Ответ

3 голосов
/ 05 ноября 2019
class Test {
    companion object fun classFoo() {
        //do something
    }
}

эквивалентно

class Test {
    companion object // Add "{ }" to make it explicit that the object body is empty

    fun classFoo() {
        //do something
    }
}

, то есть классу с пустым сопутствующим объектом (который является допустимым синтаксисом) и нормальной функцией-членом, вызываемой обычным способом:

Test().classFoo()
...