2017-12-12 1 views
0

Underscore.js hat eine Funktion, die indexBy führt Folgendes aus:Wie schreibt man `indexBy` am besten in Scala?

eine Liste gegeben, und eine iteratee Funktion, die einen Schlüssel für jedes Element in der Liste (oder einen Eigenschaftsnamen) zurückgibt, gibt ein Objekt mit ein Index von jedem Artikel. Genau wie groupBy, aber wenn Sie wissen, dass Ihre Schlüssel einzigartig sind.

var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}]; 
_.indexBy(stooges, 'age'); 
=> { 
    "40": {name: 'moe', age: 40}, 
    "50": {name: 'larry', age: 50}, 
    "60": {name: 'curly', age: 60} 
} 

Was ist der beste Weg, dies in Scala zu schreiben?

Antwort

1
final case class Stooge(name: String, age: Int) 

val stooges = Seq(Stooge("moe", 40), Stooge("larry", 50)) 

val result = stooges.map(s => s.age -> s).toMap 

println(result) 
// Map(40 -> Stooge(moe,40), 50 -> Stooge(larry,50)) 
Verwandte Themen