Немного подправил either
This commit is contained in:
parent
aaefef570b
commit
7309f6be46
@ -13,7 +13,7 @@ import java.lang.reflect.ParameterizedType
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* При объявлении [Either] для (де)сериализации *НЕОБХОДИМО* объявить
|
* При объявлении [Either] для (де)сериализации *НЕОБХОДИМО* объявить
|
||||||
* такое *левое* свойство, которое имеет [TypeAdapter] который не "засоряет" JsonReader
|
* такое *левое* свойство, которое имеет [TypeAdapter] который не "засоряет" [JsonReader]
|
||||||
*/
|
*/
|
||||||
object EitherTypeAdapter : TypeAdapterFactory {
|
object EitherTypeAdapter : TypeAdapterFactory {
|
||||||
override fun <T : Any?> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? {
|
override fun <T : Any?> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? {
|
||||||
|
@ -20,6 +20,13 @@ data class Either<L, R>(val left: L?, val right: R?) {
|
|||||||
right.invoke(this.right!!)
|
right.invoke(this.right!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline fun <T> reduce(left: (L) -> T, right: (R) -> T): T {
|
||||||
|
return if (this.left != null)
|
||||||
|
left.invoke(this.left)
|
||||||
|
else
|
||||||
|
right.invoke(this.right!!)
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun <L, R> left(value: L): Either<L, R> {
|
fun <L, R> left(value: L): Either<L, R> {
|
||||||
|
Loading…
Reference in New Issue
Block a user