コードAは私が代わりのリターンを聞かせてを使用したいと考えていhttps://github.com/antoniolg/Kotlin-for-Android-Developers/blob/master/app/src/main/java/com/antonioleiva/weatherapp/data/db/ForecastDb.ktKotlinではletの代わりにreturnを使う方法はありますか?
からであるので、私はコードBの書き込みが、コードBをコンパイルすることができない、と私は2つのエラーを取得し、なぜですか?
エラー:(30、10) 'リターン' はここでは許可されていない
エラー:(30、45)のミスマッチを入力:CityForecast推論タイプですか?しかしCityForecastは
コードA
override fun requestForecastByZipCode(zipCode: Long, date: Long) = forecastDbHelper.use {
val dailyRequest = "${DayForecastTable.CITY_ID} = ? AND ${DayForecastTable.DATE} >= ?"
val dailyForecast = select(DayForecastTable.NAME)
.whereSimple(dailyRequest, zipCode.toString(), date.toString())
.parseList { DayForecast(HashMap(it)) }
val city = select(CityForecastTable.NAME)
.whereSimple("${CityForecastTable.ID} = ?", zipCode.toString())
.parseOpt { CityForecast(HashMap(it), dailyForecast) }
city?.let { dataMapper.convertToDomain(it) }
}
期待コードB
override fun requestForecastByZipCode(zipCode: Long, date: Long) = forecastDbHelper.use {
val dailyRequest = "${DayForecastTable.CITY_ID} = ? AND ${DayForecastTable.DATE} >= ?"
val dailyForecast = select(DayForecastTable.NAME)
.whereSimple(dailyRequest, zipCode.toString(), date.toString())
.parseList { DayForecast(HashMap(it)) }
val city = select(CityForecastTable.NAME)
.whereSimple("${CityForecastTable.ID} = ?", zipCode.toString())
.parseOpt { CityForecast(HashMap(it), dailyForecast) }
return dataMapper.convertToDomain(city)
}
:
が横に、あなたは、ラムダから返すようにしたい場合はqualified returnsを使用する必要があります。クロージャの最後の式は、暗黙的に返される値です。 –