Я не совсем уверен, что, на мой взгляд, проблема на самом деле. Но я пытаюсь использовать lazy
в качестве делегата, и я получаю ошибки компилятораЛенивая инициализация свойства класса Kotlin не будет компилироваться
data class Geocode(var latitude: Double, var longitude: Double) : Comparable<Geocode> {
override fun compareTo(other: Geocode): Int {
var result = this.latitude.compareTo(other.latitude)
if (result == 0)
result = this.longitude.compareTo(other.longitude)
return result
}
}
data class HubKt(val position:Geocode) {
}
data class Example(val hubs:Collection<HubKt>) {
val bounds:Any by lazy {
object {
val ne: this.hubs.map { h -> h.position }.max()
val sw: this.hubs.map { h -> h.position }.min()
}
}
}
если это Java, я хотел бы функцию bounds
вернуть карту:
public Map<String,Geocode> getBounds() {
Geocode ne = geos.stream().max(Geocode::compareTo).get();
Geocode sw = geos.stream().min(Geocode::compareTo).get();
return ImmutableMap.of("ne",ne,"sw",sw);
}
Я думаю, что проблема не использует правильный this
. Я пробовал [email protected]
, и это не выход. Черт, я мог бы даже переусердствовать. Спасибо за понимание.
Вам необходимо показать свои ошибки в компиляторе. И удалите «возврат» из ленивого, вы не вернетесь, когда в лямбда. –
также, можете ли вы сделать образец, который имеет меньше зависимостей? –
Будет обновлено прямо сейчас –