小编dea*_*d11的帖子

在 scala 中输入别名以在单独的包中使用

我有两个文件,Vec3.scala并且Main.scala. 在 中Vec3.scala,我定义了Vec3case 类,它实现了各种不错的运算符,例如+unary_-、点积等。由于我将在我正在处理的项目中使用颜色和点,我的 C++ 直觉希望我输入别名,Vec3如下Color所示Point3

// Vec3.scala
package vec3

final case class Vec3(x: Float, y: Float, z: Float) {
  ...math functions...
}

type Color = Vec3
type Point3 = Vec3
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用 进行编译时sbt,我收到了我所期望的以下错误:

expected class or object definition
type Color = Vec3
^
Run Code Online (Sandbox Code Playgroud)

我认为这是因为这些类型别名不驻留在类或对象中,但我不希望它们驻留在类或对象中,因为我更希望它们具有Color与本身Point3相同的易用性Vec3。如果我使用 C++,我只需将这些定义放入头文件中即可,但可惜了。有没有一种方法可以在 Scala 中执行此操作,而无需我的vec3包的用户每次在文件中使用这些类型别名时自己创建这些类型别名?或者是否有一些巧妙的 Scala 策略可以以不同的方式解决这个问题?

scala package type-alias

1
推荐指数
1
解决办法
1211
查看次数

标签 统计

package ×1

scala ×1

type-alias ×1