如果我用两个参数创建自己的类型:
class !:[A, B]
然后在REPL中创建它的实例不会按我想要的方式显示它的类型:
scala> new !:[Int, Int]
res18: !:[Int,Int] = $bang$colon@5eb1479
相反,我希望它显示如下:
scala> new !:[Int, Int]
res18: Int !: Int = $bang$colon@5eb1479
这是否可以在scala中使用?
答案 0 :(得分:1)
符号类型的中缀显示在Scala 2.12.2中是默认的。更改是在this pull request中进行的。
它还在包showAsInfix
中添加了注释scala.annotation
,以便在需要更改默认行为的情况下为您提供控制。
答案 1 :(得分:0)
不确定这是否有帮助,但您可以覆盖toString方法并控制输出的第二部分,如下所示:
import scala.reflect.runtime.universe.{TypeTag, typeOf}
class A[X, Y] (implicit val tt: TypeTag[X], implicit val ty: TypeTag[Y]) {
override def toString() = typeOf[X] + " !: " + typeOf[Y]
}
new A[Int, Int]()
输出
res15: A[Int,Int] = Int !: Int