预 SIP:集合字面量的语法

主要观点:Scala 目前缺乏简洁的集合字面量语法,提议引入特殊语法来改变这一状况,新语法更简洁易读,能保留实现细节且对其他语言开发者更熟悉。
关键信息

  • 集合字面量是逗号分隔的表达式序列,类型取决于预期类型,无预期类型时为Seq,全是a -> b形式时为Map
  • 编译器会搜索ExpressibleAsCollectionLiteral类型类的实例来转换字面量元素,标准库有相关给定实例。
  • 讨论了替代方案,如括号语法可能存在问题,类型适配方案应通过类型类显式选择,避免引入新的滥用情况。
    重要细节
  • 新语法示例:[[1, 0, 0], [0, 1, 0], [0, 0, 1]]表示对角矩阵。
  • ExpressibleAsCollectionLiteralfromLiteral方法可通过宏实现更高效直接转换。
  • “无预期类型”的具体含义及MapSeq作为默认类型的规则。
  • 实现为draft PR,实施过程简单无困难。
阅读 6
0 条评论