short way to breakOut to specific collection type?

后端 未结 3 1173
太阳男子
太阳男子 2021-01-12 08:14
scala> val m = Map(1 -> 2)
m: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2)

scala>  m.map{case (a, b) => (a+ 1, a+2, a+3)}
res42: scala.colle         


        
相关标签:
3条回答
  • 2021-01-12 08:47

    You can make it a bit more concise by letting the type parameters to breakOut be inferred from the return type:

    scala>  m.map{case (a, b) => (a+1, a+2, a+3)}(breakOut) : List[(Int, Int, Int)]
    res3: List[(Int, Int, Int)] = List((2,3,4))
    
    0 讨论(0)
  • 2021-01-12 08:51

    Combining Ben and oxbow_lakes' answers, you can get a little shorter still:

    type I3 = (Int, Int, Int)
    m.map {case (a, b) ⇒ (a+1, a+2, a+3)}(breakOut): List[I3]
    
    0 讨论(0)
  • 2021-01-12 08:57

    Whilst Ben's is the correct answer, an alternative would have been to use a type alias:

    type I3 = (Int, Int, Int)
    m.map{case (a, b) => (a+ 1, a+2, a+3)}(breakOut[Map[_,_], I3, List[I3]])
    
    0 讨论(0)
提交回复
热议问题