Subcontext
Attributes
- See also
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
- Known subtypes
-
Members list
Value members
Abstract methods
Same as .produce[F]().use(f)
Same as .produce[F]().use(f)
Attributes
- Note
-
Resources allocated by the subcontext will be closed after
fexits. Useproduceif you need to extend the lifetime of the Subcontext's resources.
Unsafely substitute the Functoid that extracts the root component.
Unsafely substitute the Functoid that extracts the root component.
Note, because the plan has been calculated ahead of time with A as the root, it's not possible to request additional components via Functoid that weren't already in the graph as dependencies of A – everything that A doesn't depend on 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 by Int @Id("five") binding. Therefore, it was removed by garbage collection and cannot be extracted with this Subcontext. You'd have to create another Subcontext[String] with the same submodule to create String:
makeSubcontext[String](submodule)
...
(subcontext: Subcontext[String])
.produceRun(println(_))
// x
If you DO need dynamic replanning, you'll need to use nested injection directly.
Attributes
Concrete methods
Deprecated methods
Attributes
- Deprecated
-
[Since version 1.3.0]use regular produceRun with Subcontext[F = Identity]