首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法理解() -> Call<WeatherData>

无法理解() -> Call<WeatherData>
EN

Stack Overflow用户
提问于 2020-09-30 12:05:05
回答 1查看 52关注 0票数 0
代码语言:javascript
复制
suspend fun  safeApiCall(
        apiCall: () -> Call<WeatherData>
    ): Resource<WeatherData> { 
         apiCall.enqueue()          //error Unresolved reference: enqueue
}

在上面的代码中,() -> Call<WeatherData>的含义是什么,它与Call<WeatherData>有何不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-30 12:27:56

是的,在@ADM链接的https://kotlinlang.org/docs/reference/lambdas.html#function-types部分解释了语法。

基本上,apiCall的类型是一个没有参数的函数( (),比如调用someFunction()),它返回(->)一个带有Call<WeatherData>类型的结果。

代码语言:javascript
复制
fun apiCall(): Call<WeatherData>

但您可以传递任何与该签名匹配的函数(相同的参数类型、相同的返回类型)。这意味着你也可以通过兰巴达

代码语言:javascript
复制
safeApiCall({ 
    doStuff()
    doMoreStuff()
    doThingThatReturnsAWeatherDataCall()
})

(当lambda是唯一可以从括号中移出的参数时,我只想说明您将它作为参数传入)

如果在某个地方声明了一个与签名匹配的函数,则可以将对该函数的引用传递给

代码语言:javascript
复制
fun coolWeatherFunction(): Call<WeatherData>

safeApiCall(this::coolWeatherFunction)

(您可以删除this,只需显示如何引用特定实例或类上的函数)

它有时会更易读

代码语言:javascript
复制
"1 2 3 4 5".split(' ').map(String::toDouble).forEach(::println)

1.0
2.0
3.0
4.0
5.0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64137216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档