问题标签 [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.
scala - 使用“方法 xxx 不覆盖任何内容”错误覆盖 Scala 中的通用函数
我正在学习 Scala 语言功能。我声明了一个带有类型参数的类。
类Pair
具有通用功能replaceFirst
。我声明了一个NastyDoublePair
扩展的新类Pair[Double]
。而且我想覆盖通用函数replaceFirst
。这是编译错误代码:
编译错误如下
但是,如果我将功能更改replaceFirst
为
此外,更改Pair[+T]
为Pair[T]
. 一切顺利。
T
即使我想将类型参数设置为协变类型,如何修复编译错误。否则,我的情况没有解决方案。我必须使用一个不变的类型参数,不是Pair[+T]
但是Pair[T]
感谢您分享您的想法。最好的祝愿。
kotlin - Kotlin 类型不匹配列表并列出?>
当我使用包含符号和关键字的列表调用序列化时,编译器会抱怨
类型不匹配:
List 不应该是协变的吗?
如何构造类型签名以匹配编译器的期望List<Comparable<{Symbol & Keyword}>?>
编译器需要该类型List<Comparable<{Symbol & Keyword}>?>
,但这不是有效的 kotlin 语法
java - 为什么在 java 方法覆盖中允许有协变返回类型,但不允许有协变参数?
例如,我有一个处理器基类,其方法返回一个对象并将对象作为参数。我想扩展它并创建一个 StringProcessor,它将返回 String 并将 String 作为参数。然而,协变类型只允许使用返回值,而不是参数。这种限制的原因是什么?
scala - 在 Scala 中定义子类型时,为什么不将协变设置为默认值?
这意味着定义trait Option[T]
与 相同trait Option[+T]
。
很容易认为val humanOpt: Option[Human]
can 指向一个Option[Student]
实例,就像val humanOpt: Human
can 指向一个Student
实例一样。
也许这看起来有些奇怪,但我为什么要考虑这个?
Java 变量默认为多态,与 c++ 相比,它应该使用virtual
关键字。我认为在 Java 中简化 OO 很重要。
Scala 在许多与 Java 相比更频繁的用例中使用高阶类型,例如Option
,Try
或者自己定义 a Cache[T]
。
此外,它仍然符合 Liskov Substitution 原则。
我只想知道为什么不将协变简化为默认行为?
javascript - 使用 flowjs 在 `import *` 上分配模拟函数
假设我有以下代码:
然后在这样的测试中使用它:
这无法通过以下方式进行类型检查:
无法将 jest.fn() 分配给 exampleAll.exampleFunc,因为属性 exampleFunc 不可写。
为什么不可写?以及如何在使用流的同时进行这种模拟?
谢谢!
generics - 协变(输出)和泛型类型 kotlin
在 Java 中,我可以这样做:
在科特林:
但问题是:使用协变(出)但类型参数出现在“入”位置
有什么办法解决这个问题吗?如何在 Java/Kotlin 中使用相同的代码?谢谢
r - 调整性别后绘制生存曲线
我有一个数据集,其中包含经过/未经治疗的样本及其死亡年龄和性别。所有的样本都是死的。我想测试治疗是否影响生存。
数据集 df 如下所示
以下是我测试治疗是否影响生存的代码:
不同治疗组的生存图
但是性别是一个相当重要的共同变量(女性通常比男性活得更长),因此我想根据性别进行调整。但是下面的代码给了我 4 条生存曲线。我想要的是根据性别调整的两条曲线(治疗与非治疗)。
这只给出一条曲线。
这给出了双曲线,男性与女性。
我想要的图类似于这个例子:
“在对年龄、性别、种族、怀疑影响 B27 检测和死亡率的疾病进行调整后”。他们调整了相当多的协变量,并调整了 B27+ 和 B27- 的生存图(我的治疗与未治疗)。
任何帮助将不胜感激!!!
generics - Kotlin 泛型:违反直觉的类型推断和使用 out 关键字检查
我最近一直在学习 Kotlin,同时对协变类型有一些疑问。
示例代码在这里。我有Option
并且Option2
都有一个类型参数T
和一个run
扩展名。
我可以理解 中的前两个run
,validation()
因为它们的行为类似于 Java。但是为什么第三行编译?Option<T>
在 中是不变的T
。我们不能将Option<C>
实例传递到Option<B>
预期的位置。
在我添加一个out
关键字之后T
,现在它们都可以编译了。为什么?
java - 关于Java中协变参数的问题
我有这段代码:
我知道有一些错误,比如协变返回类型
或者b.metodo3();
不存在,但我的问题是关于这个:
Eclipse 没有向我显示任何错误,但我认为它们具有协变参数,这在 Java 中是不允许的。我错过了什么?(也许X x5 = c1.metodo1(new Y());
其中调用了A的metodo1,但我不明白另一个)。
谢谢!
r - R 中带有 afex 的 ANCOVA:错误:受试者间设计中的空单元格,但没有 NA
我正在使用 afex 包中的 aov_ez 在 R 中执行阶乘 ANCOVA。我有两个二进制协变量,它们都编码为因子和虚拟变量(0 和 1)。数据集中或协变量列中没有缺失数据。
但是,当我运行 aov_ez 时,它适用于协变量之一,使用以下模型:
但对于另一个(见下文),我收到以下错误消息:错误:主题间设计中的空单元格(即错误的数据结构)。
怎么会这样?同样,我确定协变量 FOREIGN.P 是具有两个水平的因子,并且没有丢失数据点。