在scala中键入alias,以便在单独的包中使用

在scala中键入alias,以便在单独的包中使用,scala,package,type-alias,Scala,Package,Type Alias,我有两个文件,Vec3.scala和Main.scala。在Vec3.scala中,我定义了Vec3 case类,该类实现了各种不错的操作符,如+、一元数、点积等等。因为我将使用我正在工作的项目中的颜色和点,所以我的C++本能想让我把别名VEC3作为颜色和点3来输入,比如: 然而,当我尝试使用sbt进行编译时,我得到了我有点预料到的以下错误: expected class or object definition type Color = Vec3 ^ 我假设这是因为这些类型别名不驻留在类或对

我有两个文件,Vec3.scala和Main.scala。在Vec3.scala中,我定义了Vec3 case类,该类实现了各种不错的操作符,如+、一元数、点积等等。因为我将使用我正在工作的项目中的颜色和点,所以我的C++本能想让我把别名VEC3作为颜色和点3来输入,比如:

然而,当我尝试使用sbt进行编译时,我得到了我有点预料到的以下错误:

expected class or object definition
type Color = Vec3
^

我假设这是因为这些类型别名不驻留在类或对象中,但我不希望它们驻留在类或对象中,因为我更希望颜色和Point3具有与Vec3本身相同的易用性。如果我使用C++,我会把这些定义放在头文件中,并调用它一天,但唉。在Scala中有没有一种方法可以做到这一点,而不必让我的vec3包的用户每次在文件中使用这些类型别名时都自己生成它们?或者是否有一些漂亮的Scala策略以不同的方式解决了这个问题?

类型别名不能存在于Scala 2中的类、特征或对象之外。在中定义它们。

类型别名不能存在于scala 2中的类、特征或对象之外。在中定义它们。

另一个选项是使用类似于包的对象,例如,我会将这三个对象放在对象模型中。另一个选项是使用类似于包的对象,例如,我会将这三个对象放在对象模型中
expected class or object definition
type Color = Vec3
^