2014-03-04 3 views

답변

1

방법 indexWhere 다음으로,이 의미를 제공

val sorted = Map("a" -> 10, "b" -> 11, "c" -> 12) 

scala> sorted.keyIndex("a",10) 
res15: Int = 0 

및 비 정합이어서

implicit class keyIndexing[A,B](val m: Map[A,B]) extends AnyVal { 
    def keyIndex(key: A, value: B) = { 
    m.toArray.indexWhere{ case (k,v) => key == k && value == v } 
    } 
} 

(또는 비 존재) 키 값

scala> sorted.keyIndex("a",11) 
res16: Int = -1 

scala> sorted.keyIndex("z",11) 
res19: Int = -1 
+0

keyIndex (key, value)가 필요합니다. – harish

+0

값없이 작동하지 않습니다. – harish

+0

@harish가 키 및 값과 일치하도록 업데이트되었습니다. – elm

1

sorted을 정의하고 원하는 결과를 보여 주면 도움이 될 것이라고 생각하지만 실제로 그렇게 할 수 있습니다. Array의 인스턴스

scala> val sorted = Map("zero" -> 0, "one" -> 1, "two" -> 2) 
sorted: scala.collection.immutable.Map[String,Int] = Map(zero -> 0, one -> 1, two -> 2) 

scala> val indexByColName =sorted.view.zipWithIndex.toMap 
indexByColName: scala.collection.immutable.Map[(String, Int),Int] = Map((zero,0) -> 0, (one,1) -> 1, (two,2) -> 2) 

scala> indexByColName.get(("zero", 0)).get 
res1: Int = 0 

scala> indexByColName.get(("two", 2)).get 

res3: Int = 2 
관련 문제