首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型别名搞砸了类型标记?

类型别名搞砸了类型标记?
EN

Stack Overflow用户
提问于 2013-02-04 06:49:39
回答 2查看 139关注 0票数 2

为什么类型标记不能与类型别名一起工作。例如,给定

代码语言:javascript
复制
trait Foo
object Bar {
  def apply[A](implicit tpe: reflect.runtime.universe.TypeTag[A]): Bar[A] = ???
}
trait Bar[A]

我想在下面的方法中使用别名,因为我需要输入大约24次A

代码语言:javascript
复制
def test {
  type A = Foo
  implicit val fooTpe = reflect.runtime.universe.typeOf[A] // no funciona
  Bar[A]                                                   // no funciona
}

下一次尝试:

代码语言:javascript
复制
def test {
  type A = Foo
  implicit val fooTpe = reflect.runtime.universe.typeOf[Foo] // ok
  Bar[A]                                                     // no funciona
}

看起来我根本不能用我的化名。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 18:40:35

请改用weakTypeOf。反射在内部区分全局可见声明和局部声明,因此您也需要区别对待它们。在更高版本的Scala中,这个瘤可能会被移除。

票数 1
EN

Stack Overflow用户

发布于 2013-02-04 07:36:24

更改def apply声明:

代码语言:javascript
复制
import scala.reflect.runtime.universe._
trait Foo
object Bar {
  def apply[A]()(implicit tpe: TypeTag[A]): Bar[A] = ???
}
trait Bar[A]
class test {
  type A = Foo
  implicit val foo = typeOf[A]
  def test = Bar[A]()                                                 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14678292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档