问题标签 [scala-generics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 为什么用 Option 封装泛型方法调用 defers ClassCastException?
假设我有一个这样的数组*:
由于明显的原因而失败:
接下来让我们考虑以下类:
据我所知getAs
,应该与前面的行为相同,apply
后面跟着asInstanceOf
.
令人惊讶的是,事实并非如此。单独调用时会抛出异常:
但是当包装Option
成功时:
并且仅在我尝试访问包装值时失败:
那么这里会发生什么?它似乎是有限的ClassCastException
,所以我想这与一些丑陋的事情有关,比如类型擦除。
*Any
并asInstanceOf
在那里模仿第 3 方代码的行为,所以请不要纠缠于此。
** 在 Scala 2.10.5、2.11.7 中测试
*** 如果您对上下文感兴趣,可以查看Using contains in scala - exception
****评论中链接的其他相关问题:
scala - 通用扩展 Scala 集合
我有一个Seq[(A, B)]
. 我想为这样的集合添加一个隐式方法,这样我就可以.toMultiMap
取回一个Map[A, Seq[B]]
.
这是我的第一次尝试:
但是,现在的问题是我总是得到一个Traversable
值。Map[A, Set[B]]
如果我这样做,我想取回一个Set[(A, B)].toMultiMap
。
所以,然后我尝试了这样的事情:
但是,它不起作用:
这样做的方法是什么?
scala - Scala - 协方差
根据协方差定义:
Q[+B] 表示 Q 可以取任何类,但如果 A 是 B 的子类,则 Q[A] 被认为是 Q[B] 的子类。
让我们看看下面的例子:
一切都很好,但我不明白为什么List1[SomeB]
是 的子类List1[SomeA]
,或者换句话说,为什么 b 是 的子类a
?
scala - scala中泛型抽象类型的模式匹配
我有一个自递归类型:
现在,我想在P#Solution
. 假设我们在case class Foo[P <: Problem[P]]()
:
当然,由于类型擦除而失败。有没有办法让代码在 scala 中编译?
我见过类/类型标签,但我不确定它们是否可以在这种情况下使用。
scala - Scala 定义一个只接受case类的泛型类
在 Scala 中定义泛型类时,如何确保类型参数“A”必须是案例类?
语境:
我正在尝试定义一个通用的“TypedCollection”包装类来交互响应式mongo JSONCollection,就好像它是一个案例类的集合(类似于关系数据库的Typesafe Slick)。
'A' 必须是一个案例类的原因是它会自动被赋予一个 'unapply' 方法。在创建类型“A”到 JsObject 或 BSONObject 的隐式转换时,在泛型类中使用此方法,以便可以将其存储在 MongoDB 中。IE
scala - 在scala中传递类型信息
如果我有一些像这样定义的类层次结构
sealed trait A
case class B() extends A
case class C() extends A
// and so on ..
在不同的位置,我想调用一些方法,动态地将上面的类作为类型传递给该函数
(例如method[B](..){..} or method[C](..){..}
:)
如何在运行时实现这一点?
scala - 为什么 Scala 在泛型函数类型参数推断中无法将 Null 类型识别为 T 的子类型?
我在scala中有以下函数定义:
这应该结合2个GenExtractors:
进入:
其中 C 是 A 和 B 的共同超类型
但是,当我尝试调用此函数时:
我收到以下错误:
这显然是一个误报,因为在这种情况下:
满足条件:Null <: R & R >: R
为什么scala编译器给了我这个错误?我应该怎么做才能修复它?
java - Spark自定义hadoop输入格式java泛型错误
在尝试评估 Spark 以重用我们现有的 mapreduce 时代的自定义输入格式时,我遇到了 Java 泛型问题。
以上导致 myRdd 出现以下错误
不知道发生了什么。在我看来,我确实满足了界限?我无法发现问题?
这是正在调用的 scala 代码。
scala - 为什么在具有相同构造函数参数类型的案例类中scala可序列化性不同?
为什么我能够序列化这个:
...但不是这个
两者似乎都有相同的构造函数类型原型:
并且都扩展了 scala.Serializable 和 java.io.Serializable
它有一种实现 TypeAware 子类的方法:
- 避免必须在每个子类中声明 tpe(就像 ClassWithType2 一样)?
- 允许对象被序列化
这是测试工具