diff --git a/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/BaconFryer.scala b/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/BaconFryer.scala new file mode 100644 index 0000000..a81fa03 --- /dev/null +++ b/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/BaconFryer.scala @@ -0,0 +1,19 @@ +package tv.codely.scala_intro_examples.lesson_07_generics.exercise_solutions.joan_miralles + +import tv.codely.scala_intro_examples.lesson_07_generics.exercise_solutions.joan_miralles.Ingredients.{ + Bacon, + FriedBacon +} + +import scala.concurrent.duration._ +import scala.concurrent.{ExecutionContext, Future} + +final class BaconFryer(implicit ec: ExecutionContext) extends Fryer[Bacon, FriedBacon] { + private val minFryTime = 1.second + + override def fry(bacon: Bacon): Future[FriedBacon] = Future { + Thread.sleep(minFryTime.toMillis) + + FriedBacon(bacon) + } +} diff --git a/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/EggFryer.scala b/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/EggFryer.scala new file mode 100644 index 0000000..e5c18e0 --- /dev/null +++ b/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/EggFryer.scala @@ -0,0 +1,17 @@ +package tv.codely.scala_intro_examples.lesson_07_generics.exercise_solutions.joan_miralles + +import tv.codely.scala_intro_examples.lesson_07_generics.exercise_solutions.joan_miralles.Ingredients.{Egg, FriedEgg} + +import scala.concurrent.duration._ +import scala.concurrent.{ExecutionContext, Future} + +class EggFryer(implicit ec: ExecutionContext) extends Fryer[Egg, FriedEgg] { + private val minFryTime = 6.second + + override def fry(egg: Egg) = Future { + Thread.sleep(minFryTime.toMillis) + + FriedEgg(egg) + } + +} diff --git a/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/Fryer.scala b/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/Fryer.scala new file mode 100644 index 0000000..8d63b95 --- /dev/null +++ b/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/Fryer.scala @@ -0,0 +1,7 @@ +package tv.codely.scala_intro_examples.lesson_07_generics.exercise_solutions.joan_miralles + +import scala.concurrent.Future + +trait Fryer[IngredientType, FriedIngredientType] { + def fry(ingredientType: IngredientType): Future[FriedIngredientType] +} diff --git a/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/Ingredients.scala b/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/Ingredients.scala new file mode 100644 index 0000000..32f03cc --- /dev/null +++ b/src/main/tv/codely/scala_intro_examples/lesson_07_generics/exercise_solutions/joan_miralles/Ingredients.scala @@ -0,0 +1,10 @@ +package tv.codely.scala_intro_examples.lesson_07_generics.exercise_solutions.joan_miralles + +abstract class Ingredient() + +object Ingredients { + final case class Egg() extends Ingredient + final case class Bacon() extends Ingredient + final case class FriedBacon(bacon: Bacon) extends Ingredient + final case class FriedEgg(egg: Egg) extends Ingredient +}