如果我創造我自己的類型有兩個參數:如何觸發綴式顯示在REPL
class !:[A, B]
然後創建在REPL一個它的實例沒有顯示它的類型我想要的方式:
scala> new !:[Int, Int]
res18: !:[Int,Int] = [email protected]
相反,我想它顯示是這樣的:
scala> new !:[Int, Int]
res18: Int !: Int = [email protected]
這是可能的Scala呢?
如果我創造我自己的類型有兩個參數:如何觸發綴式顯示在REPL
class !:[A, B]
然後創建在REPL一個它的實例沒有顯示它的類型我想要的方式:
scala> new !:[Int, Int]
res18: !:[Int,Int] = [email protected]
相反,我想它顯示是這樣的:
scala> new !:[Int, Int]
res18: Int !: Int = [email protected]
這是可能的Scala呢?
綴顯示的符號類型是默認在Scala 2.12.2。該更改是在this pull request中進行的。
它還在包scala.annotation
添加註釋showAsInfix
給你的,你需要改變默認行爲的情況下控制。
不知道這是否有助於但是你可以重寫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
感謝您的嘗試,但我真的想能夠以不同方式顯示'A [Int,Int]'。我已經在我的情況下重寫了toString方法。 –