如何在带方法引用表达式(双冒号表达式)的改造 GET 请求中使用默认参数
现在我重构我的代码。我尝试使用方法引用表达式来改进 Get Rquest 方法。 但不能使用默认参数。 为什么?有人有任何解决方案吗?
// WebServer.kt
interface WebServer{
@GET("info/list/week")
fun getWeekTrendingInfo(
@Query("language") language: String = "en-US",
@Header("authKey") authKey: String = ${BuildConfig.API_KEY}
): Call<InfoDTO>
@GET("info/list/day")
fun getDailyTrendingInfo(
@Query("language") language: String = "en-US",
@Header("authKey") authKey: String = ${BuildConfig.API_KEY}
): Call<InfoDTO>
}
// MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
...
loadTrendingInfos(isWeek)
}
private fun loadTrendingInfos(isWeek: Boolean) {
webService.run{
val api = if (isWeek) this::getWeekTrendingInfo else this::getDailyTrendingInfo
api().enqueue(InfoCallback { _, response -> // ERROR! IDE say No value passed for parameter
adapter.submitList(response.body().infoList)
})
}
}
当我在 mainActivity 的 loadTrendingInfos 函数中调用 api( ) 时(不包括参数。因为我想使用默认参数),IDE 对我说
没有为参数“p1”传递任何值,没有为参数“p2”传递任何值
并且 val api 的类型为
val api: KFunction2
所以我尝试像这样调用 api( ) (包括参数。不使用默认参数)
api("en-US", "${BuildConfig.API_KEY}").enqueue(InfoCallback { _, response ->
adapter.submitList(response.body()?.movieList)
})
它工作!
但我想知道为什么不能使用默认参数? 以及如何使用默认参数这个?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论