scala – 为什么案例类仅扩展产品而不是Product1,Product2,…,Pr
发布时间:2020-12-16 09:11:35 所属栏目:安全 来源:网络整理
导读:在我了解到案例类扩展产品后,我想知道为什么不扩展ProductN.例如: case class Foo(a: Int) 我会期望Foo(1).asInstanceOf [Product1 [Int]]工作,但不会(使用Scala 2.9.1进行检查,并由其他来源和产品文档确认). 我对此感兴趣,因为我想申报类如: abstract cla
在我了解到案例类扩展产品后,我想知道为什么不扩展ProductN.例如:
case class Foo(a: Int) 我会期望Foo(1).asInstanceOf [Product1 [Int]]工作,但不会(使用Scala 2.9.1进行检查,并由其他来源和产品文档确认). 我对此感兴趣,因为我想申报类如: abstract class UnaryOp[T1 <: Exp[_],R](t1: T1) extends Exp[R] { this: Product1[T1] => } 这样一来,Unary操作的一个节点必须实现Product1.这将是很好,如果只是一个case类,一个参数就足够了. 解决方法
考虑这个:
case class X(n: Int) case class Y(x: String,y: Int) extends X(y) 如果案例类扩展了ProductN,那么将扩展Product1和Product2,但type参数更改,因此_1有两个不同的重载.这只是一个问题 – 我敢打赌还有别的. 现在,案例类继承案例类已被弃用,Martin Odersky正在考虑使它们继承ProductN. AFAIK还没有完成,但障碍已经消除. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |