什么是通过 TypeTag 获得的“<refinement>”类型?
What is a "<refinement>" type gotten through a TypeTag?
我有一个方法:
import scala.reflect.runtime.universe.{TypeTag,typeOf}
def print[T:TypeTag] = println(typeOf[T].typeSymbol.name.toString)
大多数时候,print[MyClass]
在被调用时打印 MyClass
,但有时,它会打印 <refinement>
?
我正在处理一个相当复杂的系统(多个互连的 jar,10 万行代码),我似乎无法确定是什么决定了它是一种行为还是另一种行为。但如果我知道 <refinement>
是什么意思,或者是什么触发了它,也许我可以?
改进可以解释为匿名 class 类型。例如
import scala.reflect.runtime.universe.{TypeTag,typeOf}
def print[T:TypeTag] = println(typeOf[T].typeSymbol.name.toString)
class C
trait T
print[C with T]
type A = C with T
print[A]
两种情况下的输出都是 <refinement>
。
我有一个方法:
import scala.reflect.runtime.universe.{TypeTag,typeOf}
def print[T:TypeTag] = println(typeOf[T].typeSymbol.name.toString)
大多数时候,print[MyClass]
在被调用时打印 MyClass
,但有时,它会打印 <refinement>
?
我正在处理一个相当复杂的系统(多个互连的 jar,10 万行代码),我似乎无法确定是什么决定了它是一种行为还是另一种行为。但如果我知道 <refinement>
是什么意思,或者是什么触发了它,也许我可以?
改进可以解释为匿名 class 类型。例如
import scala.reflect.runtime.universe.{TypeTag,typeOf}
def print[T:TypeTag] = println(typeOf[T].typeSymbol.name.toString)
class C
trait T
print[C with T]
type A = C with T
print[A]
两种情况下的输出都是 <refinement>
。