主要观点:Scala 目前缺乏简洁的集合字面量语法,提议引入特殊语法来改变这一状况,新语法更简洁易读,能保留实现细节且对其他语言开发者更熟悉。
关键信息:
- 集合字面量是逗号分隔的表达式序列,类型取决于预期类型,无预期类型时为
Seq
,全是a -> b
形式时为Map
。 - 编译器会搜索
ExpressibleAsCollectionLiteral
类型类的实例来转换字面量元素,标准库有相关给定实例。 - 讨论了替代方案,如括号语法可能存在问题,类型适配方案应通过类型类显式选择,避免引入新的滥用情况。
重要细节: - 新语法示例:
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
表示对角矩阵。 ExpressibleAsCollectionLiteral
的fromLiteral
方法可通过宏实现更高效直接转换。- “无预期类型”的具体含义及
Map
和Seq
作为默认类型的规则。 - 实现为draft PR,实施过程简单无困难。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。