问题标签 [covariant]

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.

0 投票
1 回答
811 浏览

scala - 使用“方法 xxx 不覆盖任何内容”错误覆盖 Scala 中的通用函数

我正在学习 Scala 语言功能。我声明了一个带有类型参数的类。

Pair具有通用功能replaceFirst。我声明了一个NastyDoublePair扩展的新类Pair[Double]。而且我想覆盖通用函数replaceFirst。这是编译错误代码:

编译错误如下

但是,如果我将功能更改replaceFirst

此外,更改Pair[+T]Pair[T]. 一切顺利。

T即使我想将类型参数设置为协变类型,如何修复编译错误。否则,我的情况没有解决方案。我必须使用一个不变的类型参数,不是Pair[+T]但是Pair[T]

感谢您分享您的想法。最好的祝愿。

0 投票
1 回答
612 浏览

kotlin - Kotlin 类型不匹配列表并列出?>

当我使用包含符号和关键字的列表调用序列化时,编译器会抱怨

类型不匹配:

List 不应该是协变的吗?

如何构造类型签名以匹配编译器的期望List<Comparable<{Symbol & Keyword}>?>

编译器需要该类型List<Comparable<{Symbol & Keyword}>?>,但这不是有效的 kotlin 语法

0 投票
2 回答
756 浏览

java - 为什么在 java 方法覆盖中允许有协变返回类型,但不允许有协变参数?

例如,我有一个处理器基类,其方法返回一个对象并将对象作为参数。我想扩展它并创建一个 StringProcessor,它将返回 String 并将 String 作为参数。然而,协变类型只允许使用返回值,而不是参数。这种限制的原因是什么?

0 投票
1 回答
88 浏览

scala - 在 Scala 中定义子类型时,为什么不将协变设置为默认值?

这意味着定义trait Option[T]与 相同trait Option[+T]

很容易认为val humanOpt: Option[Human]can 指向一个Option[Student]实例,就像val humanOpt: Humancan 指向一个Student实例一样。

也许这看起来有些奇怪,但我为什么要考虑这个?

Java 变量默认为多态,与 c++ 相比,它应该使用virtual关键字。我认为在 Java 中简化 OO 很重要。

Scala 在许多与 Java 相比更频繁的用例中使用高阶类型,例如OptionTry或者自己定义 a Cache[T]

此外,它仍然符合 Liskov Substitution 原则。

我只想知道为什么不将协变简化为默认行为?

0 投票
0 回答
319 浏览

javascript - 使用 flowjs 在 `import *` 上分配模拟函数

假设我有以下代码:

然后在这样的测试中使用它:

这无法通过以下方式进行类型检查:

无法将 jest.fn() 分配给 exampleAll.exampleFunc,因为属性 exampleFunc 不可写。

为什么不可写?以及如何在使用流的同时进行这种模拟?

谢谢!

0 投票
0 回答
246 浏览

generics - 协变(输出)和泛型类型 kotlin

在 Java 中,我可以这样做:

在科特林:

但问题是:使用协变(出)但类型参数出现在“入”位置

有什么办法解决这个问题吗?如何在 Java/Kotlin 中使用相同的代码?谢谢

0 投票
0 回答
362 浏览

r - 调整性别后绘制生存曲线

我有一个数据集,其中包含经过/未经治疗的样本及其死亡年龄和性别。所有的样本都是死的。我想测试治疗是否影响生存。

数据集 df 如下所示

以下是我测试治疗是否影响生存的代码:

不同治疗组的生存图

在此处输入图像描述

但是性别是一个相当重要的共同变量(女性通常比男性活得更长),因此我想根据性别进行调整。但是下面的代码给了我 4 条生存曲线。我想要的是根据性别调整的两条曲线(治疗与非治疗)。

在此处输入图像描述

这只给出一条曲线。

在此处输入图像描述

这给出了双曲线,男性与女性。

在此处输入图像描述

我想要的图类似于这个例子:

在此处输入图像描述

“在对年龄、性别、种族、怀疑影响 B27 检测和死亡率的疾病进行调整后”。他们调整了相当多的协变量,并调整了 B27+ 和 B27- 的生存图(我的治疗与未治疗)。

任何帮助将不胜感激!!!

0 投票
1 回答
160 浏览

generics - Kotlin 泛型:违反直觉的类型推断和使用 out 关键字检查

我最近一直在学习 Kotlin,同时对协变类型有一些疑问。

示例代码在这里。我有Option并且Option2都有一个类型参数T和一个run扩展名。

我可以理解 中的前两个runvalidation()因为它们的行为类似于 Java。但是为什么第三行编译?Option<T>在 中是不变T。我们不能将Option<C>实例传递到Option<B>预期的位置。

在我添加一个out关键字之后T,现在它们都可以编译了。为什么?

0 投票
1 回答
50 浏览

java - 关于Java中协变参数的问题

我有这段代码:

我知道有一些错误,比如协变返回类型

或者b.metodo3();不存在,但我的问题是关于这个:

Eclipse 没有向我显示任何错误,但我认为它们具有协变参数,这在 Java 中是不允许的。我错过了什么?(也许X x5 = c1.metodo1(new Y());其中调用了A的metodo1,但我不明白另一个)。

谢谢!

0 投票
0 回答
358 浏览

r - R 中带有 afex 的 ANCOVA:错误:受试者间设计中的空单元格,但没有 NA

我正在使用 afex 包中的 aov_ez 在 R 中执行阶乘 ANCOVA。我有两个二进制协变量,它们都编码为因子和虚拟变量(0 和 1)。数据集中或协变量列中没有缺失数据。

但是,当我运行 aov_ez 时,它适用于协变量之一,使用以下模型:

但对于另一个(见下文),我收到以下错误消息:错误:主题间设计中的空单元格(即错误的数据结构)。

怎么会这样?同样,我确定协变量 FOREIGN.P 是具有两个水平的因子,并且没有丢失数据点。