Movatterモバイル変換


[0]ホーム

URL:


Scala 3
3.7.4
LearnInstallPlaygroundFind A LibraryCommunityBlog
Scala 3
LearnInstallPlaygroundFind A LibraryCommunityBlog
DocsAPI
Generated with
Copyright (c) 2002-2025, LAMP/EPFL
Copyright (c) 2002-2025, LAMP/EPFL
Scala 3/scala/ValueOf

ValueOf

scala.ValueOf
finalclassValueOf[T](valvalue:T) extendsAnyVal

ValueOf[T] provides the unique value of the typeT whereT is a type which has a single inhabitant. Eligible types are singleton types of the formstablePath.type, Unit and singleton types corresponding to value literals.

The value itself can conveniently be retrieved withPredef#valueOf, which requires aValueOf to be available in implicit scope.

The compiler provides instances ofValueOf[T] for all eligible types. Typically an instance would be required where a runtime value corresponding to a type level computation is needed.

For example, we might define a typeResidue[M <: Int] corresponding to the group of integers moduloM. We could then mandate that residues can be summed only when they are parameterized by the same modulus,

case class Residue[M <: Int](n: Int) extends AnyVal { def +(rhs: Residue[M])(implicit m: ValueOf[M]): Residue[M] =   Residue((this.n + rhs.n) % valueOf[M])}val fiveModTen = Residue[10](5)val nineModTen = Residue[10](9)fiveModTen + nineModTen    // OK == Residue[10](4)val fourModEleven = Residue[11](4)fiveModTen + fourModEleven // compiler error: type mismatch;                          //   found   : Residue[11]                          //   required: Residue[10]

Notice that here the modulus is encoded in the type of the values and so does not incur any additional per-value storage cost. When a runtime value of the modulus is required in the implementation of+ it is provided at the call site via the implicit argumentm of typeValueOf[M].

Attributes

Source
ValueOf.scala
Graph
Supertypes
classAnyVal
traitMatchable
classAny

Members list

Value members

Concrete fields

valvalue:T

Attributes

Source
ValueOf.scala
In this article
Generated with
Copyright (c) 2002-2025, LAMP/EPFL
Copyright (c) 2002-2025, LAMP/EPFL

[8]ページ先頭

©2009-2025 Movatter.jp