为什么Kotlin不使用`List(…)`作为所有抽象集合的列表和类似约定的工厂?

在Scala中,使用伴侣对象的apply方法通过伴侣对象提供了一个收集工厂方法。 所以,如果我想用元素1,2和3创建一个列表,我只需要使用List(1, 2, 3) 。 该模式在所有集合types中都是一致的。

在Kotlin中,如果我写List(1, 2, 3)我会得到一个编译错误。 要创建一个列表1,2和3,必须使用listOf(1, 2, 3)List是一个接口,所以显然没有构造函数。 可能有一个伴侣对象,但没有一个。 有一个List函数,虽然签名不同于人们期望来自Scala( public inline fun List(size: Int, init: (index: Int) -> T): List )的签名。

那么,为什么Kotlincollections品库设计师选择不遵循与Scala类似的collections品工厂的统一惯例?

有一个“统一约定”:使用Kotlin标准库函数listOfarrayOfarrayOf等,如文档中所述:

Kotlin没有用于创建列表或集合的专用语法结构。 使用标准库中的方法 ,如listOf()mutableListOf()setOf()mutableSetOf()

我不确定为什么Scala方法会更好。 如果你喜欢那些类似构造函数的函数,创建它们并不是什么大不了的事情:

 fun  List(vararg e: T) = listOf(e) //use it val l = List(1, 2, 3, 4)