2014-10-06 74 views
0

有沒有辦法將Map轉換爲Traverse如何將地圖轉換爲遍歷

目的是致電map.traverseS(…)

錯誤是

<console>:16: error: value traverseS is not a member of scala.collection.immutable.Map[String,Int] 

回答

2

Map已經擁有了Traverse實例:

import scalaz._, Scalaz._ 
val m = Map(1 → "a", 2 → "b") 
println(m.traverseS({ s => State({ f: Float => (f, s+f) }) }).run(1.0f)) 

打印

(1.0,Map(1 -> a1.0, 2 -> b1.0)) 

如果你想遍歷(鍵,值)對,你可以使用.toList

println(m.toList.traverseS({ 
    case (k, v) => State({ f: Float => (f + k, v + f) }) }).run(1.0f)) 

打印

(4.0,List(a1.0, b2.0)) 
+0

我有以下錯誤: 錯誤:無法找到參數F0隱含值:scalaz.Traverse [scala.collection.immutable.Iterable] 的println(米。 traverseS({s => State({f:Float =>(f,s + f)})})。run(1.0f)) – 2014-10-06 13:32:50

+0

您是否依賴scalaz 7.1?你有這裏的進口嗎? – lmm 2014-10-06 15:21:53

+0

相同的進口。 scalaz 7.0.4 – 2014-10-06 20:49:35