我想以语法上最正确,最直接的方式访问转换为Map的列表的值。我似乎缺少了一些东西,例如
val lit = List(('a',1), ('b',2), ('c',3))
val m = lit.toMap
println( m('c') )
显然可以正常工作,打印3。
但是
println( lit.toMap ('b') )
出现“类型不匹配”失败,无论我试图在lit.toMap表达式两边加括号。我一定很想念一些愚蠢的东西,但这是什么?
答案 0 :(得分:2)
List.toMap
在编写时采用隐式参数
lit.toMap
它将被编译为
lit.toMap(Predef.$conforms[(Char, Int) <:< (Char, Int)])
因此,如果将()
放在toMap
之后,则无论lit.toMap()
还是(lit.toMap)()
,Scala编译器都希望您传入 implicit 参数明确地,因此您需要编写:
lit.toMap(implicitly[(Char, Int) <:< (Char, Int)])('b')
或
lit.toMap.apply('b')