I am having trouble for setting a default value for a function parameter when the types are generics.
My function signature looks like:
def doStuff[ K, T ]( result: Future[ Seq[ T ] ] )
( transform: T => Option[ K ] ): Future[ Either[ String, Option[ K ] ] ] = {
}
And I am aware that I cat set a default value to a function parameter like:
def doStuff(a: Int)
(f: Int => Option[Int] = k => Option(k)): Future[ Either[ String, Option[ Int ] ] ] = {
}
However I can't combine these generic types with a default function value
def doStuff[ K, T ]( result: Future[ Seq[ T ] ] )
( transform: T => Option[ K ] = k => Option(k)): Future[ Either[ String, Option[ K ] ] ] = {
}
with an obvious error message: Option[T] does not conform expected Option[K]
my last resort is to pass class tag in for K and T and change the default parameter from k => Option(k) to
def doStuff[ K: ClassTag, T ]( result: Future[ Seq[ T ] ] )
( transform: T => Option[ K ] = {
case m: K => Option( m )
case _ => None
} ): Future[ Either[ String, Option[ K ] ] ] = {
}
but this approach will force me to pass in my generic parameters on function call.
Can anyone see any other approach?
TandK?doStuffwith two parameter lists? can it be with one?Kdefault toTwhen no second parameter is supplied?