trait Param[Typeclass[_], Type] extends ReadOnlyParam[Typeclass, Type]

represents a parameter of a case class

Typeclass

type constructor for the typeclass being derived

Type

generic type of this parameter

Linear Supertypes
ReadOnlyParam[Typeclass, Type], Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Param
  2. ReadOnlyParam
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. abstract type PType

    the type of the parameter being represented

    the type of the parameter being represented

    For example, for a case class,

     case class Person(name: String, age: Int)
    
    the ReadOnlyParam instance corresponding to the age parameter would have a PType equal to the type scala.Int. However, in practice, this type will never be universally quantified.

    Definition Classes
    ReadOnlyParam

Abstract Value Members

  1. abstract def annotationsArray: Array[Any]
    Definition Classes
    ReadOnlyParam
  2. abstract def default: Option[PType]

    provides the default value for this parameter, as defined in the case class constructor

  3. abstract def dereference(param: Type): PType

    dereferences a value of the case class type, Type, to access the value of the parameter being represented

    dereferences a value of the case class type, Type, to access the value of the parameter being represented

    When programming generically, against an unknown case class, with unknown parameter names and types, it is not possible to directly access the parameter values without reflection, which is undesirable. This method, whose implementation is provided by the Magnolia macro, will dereference a case class instance to access the parameter corresponding to this ReadOnlyParam.

    Whilst the type of the resultant parameter value cannot be universally known at the use, its type will be existentially quantified on this ReadOnlyParam instance, and the return type of the corresponding typeclass method will be existentially quantified on the same value. This is sufficient for the compiler to determine that the two values are compatible, and the value may be applied to the typeclass (in whatever way that particular typeclass provides).

    param

    the instance of the case class to be dereferenced

    returns

    the parameter value

    Definition Classes
    ReadOnlyParam
  4. abstract def index: Int
    Definition Classes
    ReadOnlyParam
  5. abstract def label: String

    the name of the parameter

    the name of the parameter

    Definition Classes
    ReadOnlyParam
  6. abstract def repeated: Boolean

    flag indicating a repeated (aka.

    flag indicating a repeated (aka. vararg) parameter

    For example, for a case class,

    case class Account(id: String, emails: String*)
    
    the ReadOnlyParam instance corresponding to the emails parameter would be repeated and have a PType equal to the type Seq[String]. Note that only the last parameter of a case class can be repeated.

    Definition Classes
    ReadOnlyParam
  7. abstract def typeAnnotationsArray: Array[Any]
    Definition Classes
    ReadOnlyParam
  8. abstract def typeclass: Typeclass[PType]

    the typeclass instance associated with this parameter

    the typeclass instance associated with this parameter

    This is the instance of the type Typeclass[PType] which will have been discovered by implicit search, or derived by Magnolia.

    Its type is existentially quantified on this ReadOnlyParam instance, and depending on the nature of the particular typeclass, it may either accept or produce types which are also existentially quantified on this same ReadOnlyParam instance.

    Definition Classes
    ReadOnlyParam

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def annotations: Seq[Any]

    a sequence of objects representing all of the annotations on the case class

    a sequence of objects representing all of the annotations on the case class

    For efficiency, this sequence is implemented by an Array, but upcast to a scala.collection.Seq to hide the mutable collection API.

    Definition Classes
    ReadOnlyParam
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  10. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  17. def toString(): String
    Definition Classes
    ParamReadOnlyParam → AnyRef → Any
  18. final def typeAnnotations: Seq[Any]

    a sequence of objects representing all of the type annotations on the case class

    a sequence of objects representing all of the type annotations on the case class

    For efficiency, this sequence is implemented by an Array, but upcast to a scala.collection.Seq to hide the mutable collection API.

    Definition Classes
    ReadOnlyParam
  19. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  20. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  21. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from ReadOnlyParam[Typeclass, Type]

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped