对象中类的默认参数行为

时间:2018-06-28 12:52:54

标签: kotlin

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 :(得分:4)

::的目的是在kotlin中使用reflection,这就是为什么它向您显示语法错误的原因,即您需要传递两个参数。 因此,在这种情况下,您的语法必须为

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

如果只想要C类的对象,就应该像

val q = M.C(3)

答案 1 :(得分:0)

Kotlin没有像C ++这样的名称空间。包或嵌套类通过.而不是::分隔。您只需将以下行替换为:

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