转换为Map和访问元素的简洁语法

问题描述 投票:1回答:1

我想以语言最正确和最直接的方式访问转换为Map的列表的值。我似乎错过了一些东西,如

val lit = List(('a',1), ('b',2), ('c',3))
val m = lit.toMap
println( m('c') )

显然按预期工作,打印3。

然而,

println( lit.toMap ('b') )

无论我是否尝试在lit.toMap表达式周围放置括号,都会失败并显示“类型不匹配”。我一定很想念一些非常愚蠢的东西,但它是什么?

scala syntax
1个回答
2
投票

当你写作时,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')
© www.soinside.com 2019 - 2024. All rights reserved.