我需要使用可选参数(从和到) 这里的代码:
fun getOperationsList(
vararg typesList: OperationType,
operationStatusList: Array<OperationStatus>,
from: Date, to: Date,
callback: Callback<List<Operation>>
) {...}
在这里使用:
fun getDraftList(callback: Callback<List<Operation>>) {
getOperationsList(
operationStatusList = arrayOf(OperationStatus.CREATED),
from = Date(),
to = Date(),
callback = callback
)
}
很好,工作正常。
但是现在我想从参数中删除 我试试这个:
fun getDraftList2(callback: Callback<List<Operation>>) {
getOperationsList(operationStatusList = arrayOf(OperationStatus.CREATED), callback = callback)
}
}
但出现编译错误:
No value passed for parameter 'from' No value passed for parameter 'to'
我如何不能传递from
和to
参数?
答案 0 :(得分:2)
使用默认参数。 在您的情况下,您实际上没有在此传递任何参数,因此编译器失败是完全正常的。
示例:
fun test(
p1: T1,
p2: T2
) {
// code here
}
此函数可以这样调用:
test(t1, t2)
test(p1 = t1, p2 = t2)
但是,不能仅使用一个参数来调用此函数,例如test(t1)
。
对于这种情况,您可以使用默认参数:
fun test(
p1: T1,
p2: T2? = null
) {
// code here
}
此函数只能用一个参数来调用,例如test(t1)
。在这种情况下,默认参数将被完全省略。函数可以以“ java样式”重载的方式调用。
但是,下面的函数呢?
fun test(
p1: T1,
p2: T2? = null,
p3: T3
) {
}
这有点棘手,因为您总是必须使用命名参数或全部传递3个参数来调用此函数。
答案 1 :(得分:1)
如何为这些参数设置默认值,如:
fun getOperationsList(
vararg typesList: OperationType,
operationStatusList: Array<OperationStatus>,
from: Date = Date(),
to: Date = Date(),
callback: Callback<List<Operation>>
) {...}
getOperationsList(
typesList = list
operationStatusList = arrayOf(OperationStatus.CREATED),
callback = callback
)