Поведение параметров по умолчанию для класса в объекте - PullRequest
0 голосов
/ 28 июня 2018
object M {
    class C (val x: Int, val y: Int = 5)
}

class N(val x: Int, val y: Int = 5)

fun main(args: Array<String>) {
    val p = N(3)
    val q = (M::C)(3)
}

Почему в строке val q = есть синтаксическая ошибка?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Цель :: состоит в том, чтобы использовать отражение в kotlin, и поэтому он показывает синтаксическую ошибку, чтобы выполнить два аргумента. Так что в этом случае ваш синтаксис должен быть

val q = (M::C)(3,5)

Если вы хотите просто получить объект класса C, чем вы должны сделать это как

val q = M.C(3)
0 голосов
/ 28 июня 2018

У Kotlin нет таких пространств имен, как C ++. Пакеты или вложенные классы обрабатываются через . вместо ::. Вы можете просто заменить эту строку на:

fun main(args: Array<String>) {
    val p = N(3)
    val q = M.C(3)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...