KOTLIN:如何为函数中的泛型类型参数分配默认值?

时间:2020-09-21 19:32:15

标签: kotlin generics types

我的问题很简单(也许不是解决方法……)

我已经定义了一个通用指针:

data class pTp<T>(   // It's a generic wrap class for scalar type T
  var v:T
)

该通用指针对许多结构化数据的作用:

data class Agenda (
 var name: String="",
 var address: String=""
)

如果我想在函数中使用该类型,没问题:

fun example(...., pAg: pTp<Agenda>, .....){

}

下面的函数调用正常进行

var agen: pTp<Agenda> = pTp(Agenda())
... example(...,pAg=agen,...)

... example(...,pAg=pTp(Agenda()),...)

但是,下面的代码无法使用此参数的默认值...

fun example(...., pAg: pTp<Agenda>=pTp<Agenda>(Agenda()), .....){

}

都不是

fun example(...., pAg: pTp<Agenda>=pTp>(Agenda()), .....){

}

但是,它与我在调用方的初始化中使用的代码相同!

所以,我不知道如何进行初始化。

更新:正确的答案如下。只需在=前使用空格。疯了!

1 个答案:

答案 0 :(得分:1)

请使用下一种语法,它将起作用:

fun example(pAg: pTp<Agenda> = pTp(Agenda())) {
    // ...
}