object Ref
- Source
- Ref.scala
- Alphabetic
- By Inheritance
- Ref
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- final class ApplyBuilders[F[_]] extends AnyVal
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
-
def
apply[F[_]](implicit F: Sync[F]): ApplyBuilders[F]
Builds a
Ref
value for data types that are SyncBuilds a
Ref
value for data types that are SyncThis builder uses the Partially-Applied Type technique.
Ref[IO].of(10) <-> Ref.of[IO, Int](10)
- See also
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
in[F[_], G[_], A](a: A)(implicit F: Sync[F], G: Sync[G]): F[Ref[G, A]]
Builds a
Ref
value for data types that are Sync Like of but initializes state using another effect constructor -
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
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()
-
def
of[F[_], A](a: A)(implicit F: Sync[F]): F[Ref[F, A]]
Creates an asynchronous, concurrent mutable reference initialized to the supplied value.
Creates an asynchronous, concurrent mutable reference initialized to the supplied value.
import cats.effect.IO import cats.effect.concurrent.Ref for { intRef <- Ref.of[IO, Int](10) ten <- intRef.get } yield ten
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
unsafe[F[_], A](a: A)(implicit F: Sync[F]): Ref[F, A]
Like
apply
but returns the newly allocated ref directly instead of wrapping it inF.delay
.Like
apply
but returns the newly allocated ref directly instead of wrapping it inF.delay
. This method is considered unsafe because it is not referentially transparent -- it allocates mutable state.This method uses the Partially Applied Type Params technique, so only effect type needs to be specified explicitly.
Some care must be taken to preserve referential transparency:
import cats.effect.IO import cats.effect.concurrent.Ref class Counter private () { private val count = Ref.unsafe[IO](0) def increment: IO[Unit] = count.modify(_ + 1) def total: IO[Int] = count.get } object Counter { def apply(): IO[Counter] = IO(new Counter) }
Such usage is safe, as long as the class constructor is not accessible and the public one suspends creation in IO
The recommended alternative is accepting a
Ref[F, A]
as a parameter:class Counter (count: Ref[IO, Int]) { // same body } object Counter { def apply(): IO[Counter] = Ref[IO](0).map(new Counter(_)) }
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
This is the API documentation for the cats-effect library.
See the cats.effect package for a quick overview.
Links
Canonical documentation links:
Related Cats links (the core):