trait Subcontext[A] extends AnyRef
- Alphabetic
- By Inheritance
- Subcontext
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def plan: Plan
- abstract def produce[F[_]]()(implicit arg0: QuasiIO[F], arg1: TagK[F]): Lifecycle[F, A]
- abstract def produceRun[F[_], B](f: (A) => F[B])(implicit arg0: QuasiIO[F], arg1: TagK[F]): F[B]
Same as
.produce[F]().use(f)
Same as
.produce[F]().use(f)
- Note
Resources allocated by the subcontext will be closed after
f
exits. Useproduce
if you need to extend the lifetime of the Subcontext's resources.
- abstract def provide[T](name: Identifier)(value: T)(implicit arg0: Tag[T], pos: CodePositionMaterializer): Subcontext[A]
- abstract def provide[T](value: T)(implicit arg0: Tag[T], pos: CodePositionMaterializer): Subcontext[A]
- abstract def unsafeModify[B](f: (Functoid[A]) => Functoid[B]): Subcontext[B]
Unsafely substitute the root extracting Functoid.
Unsafely substitute the root extracting Functoid.
Note, because the
plan
has been calculated ahead of time withA
as the root, it's not possible to request additional components via Functoid that weren't already in the graph as dependencies ofA
– everything thatA
doesn't depend is not in the plan.Example:
val submodule = new ModuleDef { make[Int].fromValue(3) make[Int].named("five").from((_: Int) + 2) make[String].fromValue("x") } makeSubcontext[Int].named("five").withSubmodule(submodule) ... (subcontext: Subcontext[Int]) .unsafeModify(_ => Functoid.identity[String]) .produceRun(println(_)) // error: `String` is not available
A binding for
String
is defined in the submodule, but is not referenced byInt @Id("five")
binding. Therefore it was removed by garbage collection and cannot be extracted with this Subcontext. You'd have to create anotherSubcontext[String]
with the same submodule to createString
:makeSubcontext[String](submodule) ... (subcontext: Subcontext[String]) .produceRun(println(_)) // x
If you DO need dynamic replanning, you'll need to use nested injection directly.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def map[B](f: (A) => B)(implicit arg0: Tag[B]): Subcontext[B]
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def produceRun[B](f: (A) => B): B
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()