Почему это не может быть возвращаемым типом в Котлине?

В следующем коде я добавляю забавный myGet в класс данных WiFiDef, надеюсь, забавный myGet может вернуть объект WiFiDef.

но этот код не может быть скомпилирован, подсказка об ошибке - Ожидается тип, почему? Как я могу это исправить? Спасибо!

data class WiFiDef(
        val isChecked: Boolean = true,
        val name: String,
        val status: Boolean = false
) : DeviceDef {
    fun myGet(mContext: Context) : this {     //Error hint: Type expected
        return WiFiHelper(mContext).getWiFi()
    }
}   


class WiFiHelper(val mContext: Context) {

    fun getWiFi(): WiFiDef {      
        ..
        return WiFiDef(isChecked =aIsChecked, name= name, status = isEnabled)
    }

}

изменить: это на: WifiDef

Angel Koh 29.04.2018 06:00

Сигнатура функции должна быть: fun my get(mContext: Context): WiFiDef

M. Palsich 29.04.2018 07:40
1
2
179
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

this не является типом, он относится к текущему экземпляру класса, в котором вы находитесь. Метод не может возвращаться с типом this так же, как он не может возвращаться с типом x, где x является переменной.

Вместо этого, как @Angel Koh уже указал в комментарии, вы должны сделать свой метод возвращаемым типом, который соответствует типу выражения, которое вы возвращаете в нем, которым в данном случае является WiFiDef, так как это то, что ваш метод getWiFi возвращает:

fun myGet(mContext: Context): WiFiDef {
    return WiFiHelper(mContext).getWiFi()
}

Другие вопросы по теме