trait Param[Typeclass[_], Type] extends AnyRef
represents a parameter of a case class
- Typeclass
type constructor for the typeclass being derived
- Type
generic type of this parameter
- Alphabetic
- By Inheritance
- Param
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
abstract
type
PType
the type of the parameter being represented
Abstract Value Members
-
abstract
def
default: Option[PType]
provides the default value for this parameter, as defined in the case class constructor
-
abstract
def
dereference(param: Type): PType
dereferences a value of the case class type,
Type
, to access the value of the parameter being representeddereferences a value of the case class type,
Type
, to access the value of the parameter being representedWhen 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 Param.
Whilst the type of the resultant parameter value cannot be universally known at the use, its type will be existentially quantified on this Param 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
-
abstract
def
label: String
the name of the parameter
-
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 Param 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 Param instance.
Concrete 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
-
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()
-
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()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
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( ... )