问题标签 [variance]

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 回答
119 浏览

c# - 无法从 DerivedT 投射到 BaseT

我有这些类,活动记录模式的实现:

每次我想定义数据库的一行(即联系人)时,我都会创建一个新的记录类,例如:

和数据库行(即联系人)的集合为:

但在那之后我不能使用泛型来包含记录集合:

它给了我“无法将 ContactCollection 类型隐式转换为 >”。任何帮助,将不胜感激。

0 投票
1 回答
1322 浏览

scala - 如何将类型类模式与子类型结合起来?

假设我在 Scala 中使用类型类模式。以下是我如何将 C 类作为类型类 Foo 的一部分:

到目前为止,一切都很好。但是假设我有一个 C 的子类 D,并且我希望 D 的实例也“在”类型类中:

嗬!如何在不必为 D 显式提供类型类实例的情况下完成这项工作?

0 投票
1 回答
172 浏览

language-agnostic - 是否可以统一继承和参数多态的概念?

我想知道通常是否有可能统一继承和参数多态性(“泛型”)的概念,特别是在方差方面,但在他们必须如何(“语法”)和在哪里(使用站点/声明站点)方面被定义?

考虑这个观点:

  • 子类型例如S <: T可以被视为协变行为,因为接受的输入参数T也将接受S
  • 将“继承模型的方差”更改为不变量只能在定义方面通过禁止子类型(例如final,在类定义中添加修饰符)来实现,据我在大多数情况下所见,逆变是不可能的
  • 参数多态性在默认情况下是不变的,但可以使其成为协变/反变

考虑到两者之间似乎存在不可忽略的概念不匹配

  • String[] <: Object[]允许“不安全”协变(例如在 Java/C# 中)所产生的痛苦语言
  • 与继承相比,如何声明和使用继承/参数多态性的差异

在某些语言中,可以看出两者可以很好地协同工作,例如

实现排序/比较行为。

  • 是否可以想象继承和参数多态性的概念可以统一并获得相同的默认方差行为(例如默认协方差,或者这会导致需要用不变性注释标记大多数类型,因此只是将丑陋移到另一个点)? 这是否更实用,就好像数据结构在默认情况下也会变得不可变一样?
  • 是否有一个正式的系统被证明是合理的?
  • 无论具体的编程语言如何,最有可能需要哪些语法选项/更改?
  • 是否有一些工作示例或语言已经可以使用此/类似的东西?
0 投票
2 回答
177 浏览

scala - 是否可以在 Scala 中更改基类/特征的方差?

我想从 Scala 的不可变 Map 派生。它是这样定义的:

不幸的是,我的实现需要在 B 中保持不变。我尝试了以下方法,但没有成功:

也许有一个技巧@uncheckedVariance

0 投票
1 回答
7344 浏览

python - Python中N资产投资组合的投资组合方差

投资组合方差计算如下:

对于具有 N 资产的投资组合,其中

我有以下 numpy 矩阵。

投资组合中股票权重的数组(向量)(有 10 只股票):

股票收益的协方差矩阵:

当我计算

结果是一个与 covar 大小相同的数组。我是投资组合理论的新手,但我认为投资组合的方差应该是一个标量(单值)。

有没有人有这方面的经验可能会有所帮助?

0 投票
1 回答
122 浏览

c# - 转换 IFoo 的一般方法到 IFoo

I have an interface:

interface IFoo<out T> 
{
   T Get();
}

and some instances like IFoo<int> a, IFoo<User> u, IFoo<str

I have an interface:

and some instances like IFoo<int> a, IFoo<User> u, IFoo<string> s and etc. There is a List<IFoo<object>> used to collect them. But variance doesn't work for value types, is there a proper way to put them in the list?


It doesn't look like you need generics for this list, so you can have the interface implement a non-generic interface:

That way, all of your objects implement the same interface. This may not be a bad idea, since they do have something in common. Now you can simply use a List<IFoo>.

0 投票
2 回答
515 浏览

generics - 在 Scala 中指定泛型的子类型

考虑下面的例子,它应该打印 8。为什么A.Value + B.Value认为B.Value应该是一个字符串?我如何解决它?

出于类型安全的原因,以下操作应该会失败并出现类型异常:

0 投票
0 回答
159 浏览

java - 除非使用 sleep(),否则在对 Java 代码进行基准测试时差异很大

我正在通过对象序列化(ObjectInputStream、ObjectOutputStream)在本地网络上对 Java 函数进行基准测试。

在一个零负载的系统上,这给了我一个巨大的差异,结果如下:

  • 测试 1:2.23
  • 测试 2:1.58
  • 测试 3:2.08 秒

我可以在测试步骤之间使用 sleep() 调用获得更好的数字,但这当然会导致更长的测试时间。

运行几十个测试是不可能的,因为它会阻塞服务器队列。

我应该坚持 sleep() 解决方案还是有更好的方法来处理这个问题?

0 投票
2 回答
5252 浏览

python - Var(x) 和 cov(x, x) 在 numpy 中给出的结果不同

协方差的一个性质是,cov(x, x) = var(x)

但是,在 numpy 中我没有得到相同的结果。

我在这里做错了吗?我怎样才能获得正确的结果?

0 投票
1 回答
5592 浏览

r - 如何在 R 中执行 Hartley 测试

我可以找到零信息。因此,如果您有网络链接或只知道如何在 R 中进行操作,请告诉我。

这是一些统计教科书中的单向方差分析示例: