Я написал этот метод, чтобы применить функцию void к значению и вернуть значение.
public inline fun <T> T.apply(f: (T) -> Unit): T {
f(this)
return this
}
Это полезно для уменьшения чего-то вроде этого:
return values.map {
var other = it.toOther()
doStuff(other)
return other
}
Что-то вроде этого:
return values.map { it.toOther().apply({ doStuff(it) }) }
Есть ли языковая функция или метод, подобный этому, уже встроенный в Kotlin?
doStuff
здесь состоит в том, чтобы оценить его побочные эффекты, немного похоже на методpeek
в потоках Java 8? - person Greg Kopff   schedule 14.02.2015peek
, но применяется к объекту, а не к потоку. Это также напоминает мнеdoOnNext()
RxJava, но опять же применяется к объекту, а не к потоку. И точкаdoStuff
действительно зависит от пользователя, но в моем случае это добавить кother
кеш. - person Michael Pardo   schedule 16.02.2015apply
теперь является частью стандартной библиотеки Kotlin. Подробности смотрите в ответе ниже. - person Jayson Minard   schedule 02.01.2016