问题标签 [subtyping]
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.
mysql - 唯一目的是指定另一个表的子集的表
我正在设计的数据库有一个employees
表;可以有多种类型的员工,其中一种是医务人员。该数据库还需要描述医务人员之间的多对多关系以及他们拥有的能力。
是否可以创建一个medical_employees
只有一id
列的表,其唯一目的是指定哪些员工是医生?该id
列具有引用该employees
表的外键约束。下面的代码应该让我的问题更清楚:
sql - 在 SQL 对象表中为特定于子类型的属性创建索引
我创建了一个对象类型为“文档”的表。此表包含多个文档子类型(例如:配方、出版物、合同)。这些子类型都包含通用属性(id、标题、文件大小),但通常包含附加属性(即库存编号)。我为常用搜索的公共属性创建了索引,但也想为常用搜索的子类型特定属性创建索引。
例如,我为 Documents 表的 Title 创建了一个索引:
我想做类似于以下的事情:
或者可能
您能帮我确定如何为子类型特定属性创建索引吗?
感谢您的时间。
scala - 隐式搜索不指导类型推断以在 Scala 中查找超类型
在下面的代码中,我有证据R[A]
并且B
是 的子类型A
,所以我希望foo
推断出证据的类型A
并使用RA
证据。然而,scalac 拒绝这样做。
我试过这个:
但它仍然不起作用。
现在,如果我定义:
推理有效,但在我的实际代码中,我需要参考 TT。
编辑:现在我已将 A 的证据移至 A 伴生对象,此解决方案似乎不再适用。在现实环境中,证据将始终存在于伴随对象中,隐式搜索必须找到它。
另一个解决方案是让我的证据逆变,但这会给我带来很多麻烦,比如推断Nothing
和其他问题(我的实际代码比这个简化的例子更复杂)。
我怎样才能使它正常工作?
c++ - 您可以在不使用 C++ 子类型的情况下创建继承吗
有人可以给我一个没有子类型的继承示例,以及一个使用 C++ 没有继承的子类型示例吗?
python - Subtypingclassing ndarray - 如何从普通的ndarray构造
考虑下面的代码:
该行y = imarray(z)
应该只创建一个副本并更改数组的类型。(但 imarray 是 ndarray 的子类,无论如何它应该始终有效)。
如何做到这一点?
c# - 强制关闭子类型多态对象实例化
我有以下设置:
当我运行与此类似的代码时,Unity force 会关闭。我知道 C# 支持子类型多态性,所以我不确定为什么这不起作用。它没有什么特别或先进的;所以我超级困惑。无耻地承认,我在 Java 阵营中,并且我确实(不)有意识地尝试将我的 Java 范式融入 C# 范式。我没有正确使用它还是我不理解子类型在 C# 中的工作原理?
java - Collections subtypes - Liskov Substitution Principle
Java does not permit Collection<Car>
as a subtype of Collection<Vehicle>
. Is this because Collection<Car>
cannot be used in place of every Collection<Vehicle>
as the Collection<Vehicle>
could contain elements which are other subtypes of Vehicle such as Motorbike, therefore it violates Liskov substitution principle?
java - Java 规范在哪里说 List分配给 List ?
假设 classB
继承自 class A
。以下是合法的Java:
根据规范,这意味着List<A>
assignsTo List<? super B>
。但是,我很难找到说明这是合法的规范部分。特别是,我相信我们应该有子类型关系
但是 Java 8 规范的第 4.10 节将子类型关系定义为直接超类型关系的传递闭包S >1 T
,并且它根据计算一组超类型的有限函数来定义直接超类型关系T
。没有可以在输入List<A>
上产生的有界函数,List<? super B>
因为可能有任意数量的B
s 继承自A
,因此规范的子类型定义似乎对超级通配符不适用。关于“类和接口类型之间的子类型化”的第 4.10.2 节确实提到了通配符,但它只处理通配符出现在潜在子类型中的另一个方向(这个方向适合计算的直接超类型机制)。
问题:规范的哪一部分说上述代码是合法的?
动机是编译器代码,因此仅凭直觉理解为什么它是合法的或想出一个处理它的算法是不够的。由于 Java 中的一般子类型问题是无法确定的,我想处理与规范完全相同的情况,因此想要处理这种情况的规范部分。
range - 在 Ada 中,预期其范围受限子类型的类型的使用是否正确?
根据 https://github.com/AdaCoreU/Courses/blob/master/lectures/03_Programming_in_the_Large/02_Type_Safety/slides/Strong_Typing.ppt?raw=true 的幻灯片 28,下面的代码是正确的,因为“T 是 Integer 的子类型.因此,V1和V2属于同一类型"
但是如果我被允许违反范围声明的目的是什么?我的想法似乎是正确的,因为在编译时有警告,在运行时有异常。
幻灯片不正确,还是我误解了什么?
scala - 如何确定 Scala 中对象的类?
我需要检查y是否严格地是bar而不是foo的实例。我怎样才能在 Scala 中做到这一点?