scala.util
Members list
Packages
Type members
Classlikes
A utility object to support command line parsing for @main methods
A utility object to support command line parsing for @main methods
Attributes
- Source
- CommandLineParser.scala
- Supertypes
- Self type
-
CommandLineParser.type
A type class for types that admit numeric literals.
A type class for types that admit numeric literals.
Attributes
- Companion
- object
- Source
- FromDigits.scala
- Supertypes
- Known subtypes
-
trait Decimal[T]trait Floating[T]object BigDecimalFromDigitstrait WithRadix[T]object BigIntFromDigits
Attributes
- Companion
- trait
- Source
- FromDigits.scala
- Supertypes
- Self type
-
FromDigits.type
Attributes
- Source
- NotGiven.scala
- Supertypes
- Known subtypes
-
object NotGiven
A special class used to implement negation in implicit search.
A special class used to implement negation in implicit search.
Consider the problem of using implicit i1
for a query type D
if an implicit for some other class C
is available, and using an implicit i2
if no implicit value of type C
is available. If we do not want to prioritize i1
and i2
by putting them in different traits we can instead define the following:
given i1: D(using ev: C) = ... given i2: D(using ev: NotGiven[C]) = ...
NotGiven
is treated specially in implicit search, similar to the way logical negation is treated in Prolog: The implicit search for NotGiven[C]
succeeds if and only if the implicit search for C
fails.
In Scala 2 this form of negation can be simulated by setting up a conditional ambiguous implicit and an unconditional fallback, the way it is done with the default
, amb1
and amb2
methods below. Due to the way these two methods are defined, NotGiven
is also usable from Scala 2.
In Dotty, ambiguity is a global error, and therefore cannot be used to implement negation. Instead, NotGiven
is treated natively in implicit search.
Attributes
- Companion
- object
- Source
- NotGiven.scala
- Supertypes
Attributes
- Companion
- class
- Source
- NotGiven.scala
- Supertypes
- Self type
-
NotGiven.type
A boundary that can be exited by break
calls. boundary
and break
represent a unified and superior alternative for the scala.util.control.NonLocalReturns
and scala.util.control.Breaks
APIs. The main differences are:
A boundary that can be exited by break
calls. boundary
and break
represent a unified and superior alternative for the scala.util.control.NonLocalReturns
and scala.util.control.Breaks
APIs. The main differences are:
- Unified names:
boundary
to establish a scope,break
to leave it.break
can optionally return a value. - Integration with exceptions.
break
s are logically non-fatal exceptions. TheBreak
exception class extendsRuntimeException
and is optimized so that stack trace generation is suppressed. - Better performance: breaks to enclosing scopes in the same method can be rewritten to jumps.
Example usage:
import scala.util.boundary, boundary.break
def firstIndex[T](xs: List[T], elem: T): Int =
boundary:
for (x, i) <- xs.zipWithIndex do
if x == elem then break(i)
-1
Attributes
- Source
- boundary.scala
- Supertypes
- Self type
-
boundary.type
Experimental classlikes
Type class relating a FunctionN[..., R]
with an equivalent tupled function Function1[TupleN[...], R]
Type class relating a FunctionN[..., R]
with an equivalent tupled function Function1[TupleN[...], R]
Type parameters
- F
-
a function type
- G
-
a tupled function type (function of arity 1 receiving a tuple as argument)
Attributes
- Experimental
- true
- Source
- TupledFunction.scala
- Supertypes