From 4ec58996f40097ee5ee7336049b207d1fc5bb131 Mon Sep 17 00:00:00 2001 From: Regis Kuckaertz Date: Mon, 21 Aug 2017 10:16:17 +0100 Subject: [PATCH 1/2] Add Box.flatMap --- src/main/scala/com/gu/Box.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/scala/com/gu/Box.scala b/src/main/scala/com/gu/Box.scala index 6a8664f..f300be0 100644 --- a/src/main/scala/com/gu/Box.scala +++ b/src/main/scala/com/gu/Box.scala @@ -15,6 +15,7 @@ abstract class Box[T] { def alter(f: T => T): Future[T] def map[A](f: T => A): Box[A] + def flatMap[A](f: T => Box[A]): Box[A] } object Box { @@ -34,5 +35,6 @@ private class AtomicRefBox[T](t: T) extends Box[T] { def alter(f: T => T): Future[T] = Future.successful(ref.updateAndGet(t => f(t))) def map[A](f: T => A): Box[A] = new AtomicRefBox[A](f(get())) + def flatMap[A](f: T => Box[A]): Box[A] = f(t) } From 7d5aa6c76a5916d10bed028cd8d1a430c7aa267b Mon Sep 17 00:00:00 2001 From: Regis Kuckaertz Date: Thu, 7 Sep 2017 10:16:17 +0100 Subject: [PATCH 2/2] Access t from ref --- src/main/scala/com/gu/Box.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/com/gu/Box.scala b/src/main/scala/com/gu/Box.scala index f300be0..b334473 100644 --- a/src/main/scala/com/gu/Box.scala +++ b/src/main/scala/com/gu/Box.scala @@ -35,6 +35,6 @@ private class AtomicRefBox[T](t: T) extends Box[T] { def alter(f: T => T): Future[T] = Future.successful(ref.updateAndGet(t => f(t))) def map[A](f: T => A): Box[A] = new AtomicRefBox[A](f(get())) - def flatMap[A](f: T => Box[A]): Box[A] = f(t) + def flatMap[A](f: T => Box[A]): Box[A] = f(get()) }