scala - How to choose the output collection type in Seq.map? -


i'd implement like:

def f(s: seq[int]): vector[string] = s.map(_.tostring).tovector 

but i'd create directly output vector without executing map first, making whatever seq, before copying vector.

seq.map takes implicit canbuilfrom parameters induces collection output type. tried s.map(...)(vector.canbuildfrom[string]) gives error:

 found   : scala.collection.generic.canbuildfrom[vector.coll,string,scala.collection.immutable.vector[string]] (which expands to)  scala.collection.generic.canbuildfrom[scala.collection.immutable.vector[_],string,scala.collection.immutable.vector[string]]  required: scala.collection.generic.canbuildfrom[seq[int],string,vector[string]]        def f(s: seq[int]): vector[string] = s.map(_.tostring)(vector.canbuildfrom[string]) 

basically doesn't infer correctly first type argument of canbuildfrom

how can done ?

breakout you're looking for

def f(s: seq[int]): vector[string] = s.map(_.tostring)(collection.breakout) 

for in-depth discussion of breakout does, check out stackoverflow question: scala 2.8 breakout


Comments

Popular posts from this blog

asynchronous - C# WinSCP .NET assembly: How to upload multiple files asynchronously -

aws api gateway - SerializationException in posting new Records via Dynamodb Proxy Service in API -

asp.net - Problems sending emails from forum -