【问题标题】:Succint syntax of converting to Map and accessing element转换为 Map 和访问元素的简洁语法
【发布时间】:2019-04-04 14:38:23
【问题描述】:

我想以语法上最正确和最直接的方式访问转换为 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】:

    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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 2011-02-26
      • 2011-01-20
      • 1970-01-01
      相关资源
      最近更新 更多