9得票1回答
类型推断在模式匹配中对于方法和类类型参数的区别

当类型参数来自封闭方法时,模式匹配为什么会有不同的工作方式,与来自封闭类有什么区别?例如: trait Base[T] case class Derived(v: Int) extends Base[Int] class Test[A] { def method(arg: Base[A...

8得票1回答
Scala类型参数限定

我在理解Scala类型边界系统方面遇到了一些困难。我正在尝试创建一个持有类型为T的项并可以迭代类型为A的项的持有者类。目前我所拥有的内容如下: class HasIterable[T <: Iterable[A], A](item:T){ def printAll = for(i&...

8得票3回答
如何将参数化类型替换为更具体的类型

请看以下设置: 我们有一个名为SuperType的接口,其参数如下: public interface SuperType<V> { } SuperType 支持方法链式调用。因此,它定义了另一个类型参数,该参数捕获每个方法返回的具体实现子类型,如下所示: public ...

8得票1回答
在Scala中,是否有可能对def的类型参数进行“柯里化”?

假设我有一个带有多个类型参数的def: def foo[A, B, C](b: B, c: C)(implicit ev: Writer[A]) 然而,预期的用法是类型参数B和C应该根据传入的参数进行推断。 调用者只需要明确指定A(例如,让编译器选择适当的隐式对象)。不幸的是,Scala只...

8得票3回答
Java类型参数返回值的问题

我试图将这个问题压缩到最少的代码量。 我定义了一个表结构,类似于数据库表,下面是Row和Table类。一个Table本质上是一个Row列表。我希望子类定义他们特定的Table和Row类型,并且我希望编译器能够捕捉到尝试将不兼容类型的行放入表中的不当尝试。 抽象的Agent类提供了一个方法来...

8得票2回答
Scala:如何使案例类复制保留清单信息?

一个case类的copy()方法被认为是要创建一个与实例完全相同的副本,并替换任何字段名称。但在具有类型参数和清单的情况下,似乎无法实现该功能。复制将失去其参数类型的所有信息。 case class Foo[+A : Manifest](a: A) { // Capture manife...

8得票4回答
何时需要使用Some<E extends Some<E>>而不是Some<E extends Some>?

注意:这个问题与枚举无关,因此不是重复的问题。 枚举被强制仅与自身进行比较,因为编译器生成类型参数,而不是Java递归类型参数。 我正在尝试找到将类声明为以下形式的优势: public class Some&lt;E extends Some&lt;E&gt;&gt; 相对于将其声明为...

8得票2回答
"<U, T extends U>"和"<T, U super T>"不是相同的吗?"

我对以下两个方法声明感到困惑: private &lt;U, T extends U&gt; T funWorks(T child, U parent) { // No compilation errors } private &lt;T, U supe...

8得票2回答
为什么参数化类型实例在不指定类型参数的情况下可以工作

当有一个参数化类型时:data A a=X a| Y 我已经尝试(成功地)实现了Functor和Applicative,而没有指定类型参数:instance Functor A where 而不是 instance Functor (A a) where。为什么这样可以工作?在LYAH中看到...

7得票1回答
有没有办法解决未使用的类型参数?

代码: trait Trait&lt;T&gt; {} struct Struct&lt;U&gt;; impl&lt;T, U: Trait&lt;T&gt;&gt; Struct&lt;U&gt; {} 错误: error[E0207]: the type parameter ...