我想以语言最正确和最直接的方式访问转换为Map的列表的值。我似乎错过了一些东西,如
val lit = List(('a',1), ('b',2), ('c',3))
val m = lit.toMap
println( m('c') )
显然按预期工作,打印3。
然而,
println( lit.toMap ('b') )
无论我是否尝试在lit.toMap表达式周围放置括号,都会失败并显示“类型不匹配”。我一定很想念一些非常愚蠢的东西,但它是什么?
当你写作时,List.toMap
会带一个隐含参数
lit.toMap
它将被编译为
lit.toMap(Predef.$conforms[(Char, Int) <:< (Char, Int)])
因此,如果你在()
之后放置toMap
,无论lit.toMap()
还是(lit.toMap)()
Scala编译器都希望你明确地传入隐式参数,所以你需要写:
lit.toMap(implicitly[(Char, Int) <:< (Char, Int)])('b')
要么
lit.toMap.apply('b')