我有两个文件,Vec3.scala
和Main.scala
。在Vec3.scala
我定义Vec3
的情况下类,它实现很好的运营商的各种喜欢+
,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
但是,当我尝试使用进行编译时sbt
,出现了一些我期望的错误:
expected class or object definition
type Color = Vec3
^
我认为这是因为这些类型别名不存在于类或对象中,但是我不希望它们存在,因为我更喜欢Color
并且Point3
具有与Vec3
自身相同的易用性。如果我使用的是C ++,则只需将这些定义放在头文件中,然后每天称呼它,可惜。有没有一种方法可以在Scala中做到这一点,而无需让我的vec3
软件包的用户每次在文件中使用它们时都自己使这些类型别名呢?还是有一些漂亮的Scala演技以不同的方式解决了这个问题?
类型别名不能在scala 2的类,特征或对象之外存在。而是在package对象中定义它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句