Котлин установил переменную и вызвал метод в главном классе из сопутствующего объекта - PullRequest
0 голосов
/ 11 мая 2018

Я новичок в Kotlin, и я не понимаю, если / как я могу вызвать функцию или установить переменную из объекта-компаньона:

class MyClass {
    public var myVar: Boolean
    public fun myFunc(): Int { ... }

    companion object {
        private fun doStuff(){
            myVar = true
            myFunc(1)
        }        
    }   
}

Я получаю неразрешенную ссылку на myVar = true и myFunc(1).

1 Ответ

0 голосов
/ 11 мая 2018

Сопутствующий объект - это объект, который не связан с каким-либо конкретным экземпляром из MyClass, поэтому он не может получить доступ к экземпляру свойству myVar и экземпляру function myFunc без указания экземпляра. Он просто не знает, к какому экземпляру он должен получить доступ.

Если вы действительно хотите сделать это с помощью функции в объекте-компаньоне, вам следует также передать ему экземпляр MyClass:

companion object {
    private fun doStuff(instance: MyClass){
        instance.myVar = true
        instance.myFunc(1)
    }        
}   
...