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 =
行中出现语法错误?
答案 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)
}