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

can't understand about () -> Call<WeatherData>

suspend fun  safeApiCall(
        apiCall: () -> Call<WeatherData>
    ): Resource<WeatherData> { 
         apiCall.enqueue()          //error Unresolved reference: enqueue
}

在上面的代码中,() -> Call<WeatherData>的含义是什么以及它与Call<WeatherData>

的区别

是的,@ADM 的 link.

Function types 部分解释了语法

基本上apiCall的类型是一个没有参数的函数((),就像调用someFunction())并且它returns(-> ) 类型为 Call<WeatherData> 的结果。这相当于:

fun apiCall(): Call<WeatherData>

除非您可以传入与该签名匹配的任何函数(相同的参数类型,相同的 return 类型)。这意味着你也可以传入 lambdas

safeApiCall({ 
    doStuff()
    doMoreStuff()
    doThingThatReturnsAWeatherDataCall()
})

(当 lambda 是唯一可以将其移出括号的参数时,我只是想明确表示您将其作为参数传入)

如果您确实在某处声明了与签名匹配的函数,则可以改为传递对该函数的引用

fun coolWeatherFunction(): Call<WeatherData>

safeApiCall(this::coolWeatherFunction)

(您可以删除 this,仅显示您如何在特定实例或 class 上引用函数)

有时可以更易读

"1 2 3 4 5".split(' ').map(String::toDouble).forEach(::println)

1.0
2.0
3.0
4.0
5.0