在scala中获得嵌套hashmap的3级值

时间:2015-07-25 13:42:20

标签: scala hashmap

我有以下嵌套的Hashmap -

2.

我如何到达 val P = HashMap("a"->HashMap("aa"->HashMap("aaa"-> 0.25,"aab"-> 0.95), "ab"->HashMap("aba"-> 0.2, "abb"-> 0.8)), "b"->HashMap("ba"->HashMap("baa"-> -0.3,"bab"-> -0.4,"bac"-> -0.2), "bb"->HashMap("bba"-> 0.3, "bbb" -> 0.4, "bbc"-> 0.4)), "c"->HashMap("ca"->HashMap("caa"-> 0.2,"cab" -> 0.001), "cb" -> HashMap())) ? 它会引发以下错误 -

val m = P("a")("ab")("aba")
然而

Compilation Failed Main.scala:59: type mismatch; found : String("aba") required: _12 where type _12 <: String P("a")("ab")("aba") ^ 有效,给予val m = P("a")("ab")。如何获得“aba”键值?

2 个答案:

答案 0 :(得分:4)

问题实际上是P的类型推断,因为其中一个HashMap没有明确的类型。将P替换为:

val  P = HashMap("a"->HashMap("aa"->HashMap("aaa"-> 0.25,"aab"-> 0.95),
                              "ab"->HashMap("aba"-> 0.2, "abb"-> 0.8)),
                 "b"->HashMap("ba"->HashMap("baa"-> -0.3,"bab"-> -0.4,"bac"-> -0.2),
                              "bb"->HashMap("bba"-> 0.3, "bbb" -> 0.4, "bbc"-> 0.4)),
                 "c"->HashMap("ca"->HashMap("caa"-> 0.2,"cab" -> 0.001),
                              "cb" -> HashMap[String, Double]()))

答案 1 :(得分:3)

你可以正确地注释这个类型,如果你真的初始化这样的东西,我还会推荐另一种代码格式化:

$('#sidebar-b').on("click", "#lar", function() {
    var s = $('#main-img').attr('src') ;
    var slashI = s.lastIndexOf('/'),
        dotI = s.lastIndexOf('.') ;
    var num  = parseInt(s.substring(slashI + 1, dotI)) ;
    if (!isNaN (num)) {
        $('#main-img').attr('src', s.substring(0, slashI + 1) + (num - 1) + s.substring(dotI));
    } 
});