问题标签 [parametric-polymorphism]

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 投票
2 回答
1298 浏览

c++ - “真正的多态性”的例子?(最好使用 Haskell)

我已经看到了很多“真多态性”的部分定义,例如这里这里,但我无法通过两个具体示例找到一个明确的差异示例。

我知道重载+运算符是某种形式的多态性,并且它在 Haskell 和 C++ 中的实现方式不同。有人可以准确地说明两种语言的示例有什么区别吗?

0 投票
1 回答
350 浏览

documentation - Google Apps 脚本中的多态函数文档

我希望我的库函数以两种方式工作,具体取决于是否提供了第二个参数。
例如:

现在我应该如何记录它以使其看起来像:

在此处输入图像描述

本文不涉及此问题:http: //googleappsdeveloper.blogspot.de/2012/05/introducing-versions-and-libraries-in.html

0 投票
1 回答
362 浏览

java - 参数类型的java数组

不是如何做事的问题。这是一个为什么会这样的问题。

Java 中的数组在运行时知道它们的组件类型,并且由于类型擦除,我们不能拥有泛型类型变量的数组对象。允许并检查涉及泛型的数组类型的声音读/写,唯一的问题似乎是分配器表达式。

请注意,Java 编译器也不允许以下内容:

...Pong任何旧的参数类在哪里。这里没有什么是未知的。是的,在运行时,lotsofpong它只是一个数组Pong,但我看不出编译器无法记住编译时类型参数的原因。好吧,它确实记得它,因为这些类型在编译时就存在,所以唯一的问题似乎是在编译时拒绝给分配器一个特定的涉及泛型参数的组件类型。

即使参数 ofPong是一个泛型类型变量,也不应该有所作为。动态数组仍然是 的数组Pong,每个元素需要 a 的大小Pong,这不依赖于其类型参数。

是的,我知道有一些方法可以解决它 - 要么使用非参数类型的强制转换(可能使用 SuppressWarning),要么使用非参数类的子Pong<Integer>类并改用该类型。但是为什么不允许这种分配器是有原因的吗?

0 投票
1 回答
2451 浏览

c# - c#中的参数多态性?

我正在尝试在 c# 中创建一个参数多态函数:

我想T成为类型变量。但是我收到关于T找不到类的错误。

有谁知道如何解决这一问题?

谢谢。

0 投票
1 回答
108 浏览

c# - 在 C# 中出现参数多态性错误

在这个函数中:

它使用参数多态性,我得到一个itemcollection并浏览它,如果它是正确的权限,则将其添加到列表中,然后返回列表。返回的列表是 type T,所以它可以是 typeSPFolder或者SPListItem基于我的代码。

for 循环中的项目已经是 type SPListItem,如果T是 type ,SPFolder那么我必须调用该.Folder项目的方法。我不能只检测到这一点,所以我不得不使用辅助变量来决定是否需要使用它。

但问题是即使我这样做了,我仍然会在尝试将其强制转换为 type 时遇到错误T

T将是SPFolder当我调用该.Folder方法时,否则T将是类型SPListItem

有没有人看到解决这个问题?

谢谢。

0 投票
2 回答
4886 浏览

c++ - 具有不同返回类型的 C++ 多态函数

我正在创建一个属性类,它将唯一键和任意值存储为字符串(加上一个可选的注释字符串,用于写入配置文件时使用)。目前我正在使用创建一个包含原始字符串的基本属性类的方法,然后将其子类化为特定于类型的属性 - 例如。一个 IntProperty,它实现了一个将字符串转换为 int 的 getValue() 函数——以避免每次我想读取它时都必须从字符串手动转换属性值。这些子类使用 getPropertyType(),一个在基类中定义并在每个派生类中重写的虚函数,返回一个枚举值来标识它们持有的属性类型,而基类返回一个“无”标识符。

(作为旁注,我避开了模板,因为我使用的是 Qt 并且它所需的接口宏不支持模板化对象。如果值得使用模板,我可能会放弃使用接口的想法。)

我的意图是通过从基属性类继承它们并允许基属性指针数组来允许多个不同类型的属性(字符串、int、float ...)的列表。但是,我遇到的问题是,从派生类之一中将属性提取为特定类型变得非常尴尬,因为指向基类的指针显然不知道派生类中新定义的 getValue 函数。我可以选择从基类中提取字符串并手动转换,或者将基类指针转换为正确的派生类指针。第一个选项要求我手动进行转换,从而使子类化变得无用,而第二个选项听起来像是一场噩梦,因为那里'

解决这个问题的最聪明的方法是什么?我想尽可能简单地检索属性值 - 即。从从数组中获取基类指针到保存属性值的正确类型的副本,我可以使用尽可能少的样板代码。是否值得反过来考虑这个问题 - 有多个强类型属性类,它们都支持使用字符串获取和设置它们各自的值?

0 投票
3 回答
7214 浏览

c# - 如何在c#中将类类型保存为变量?

在c#中,你能做这样的事情吗?

基本上我想将类型存储为变量,因此我可以将变量用作强制转换。我正在尝试这样做,因为在我的参数多态函数中,变量可能是 2 种类型中的 1 种。这两种类型都有我想使用的相同方法,但它不会让我使用它,因为它是变量类型。

如果我至少可以将强制转换存储为一个值,那么我可以在函数中传递另一个布尔值,说明它是两种类型中的哪一种。

0 投票
3 回答
422 浏览

haskell - 多态返回类型

函数从字节流中读取 ID。它知道 id 的大小 - 可以是 4 或 8 个字节。如何使返回类型多态?

(伪代码:)

此 readId 将需要调用者的 IdSize 实例,但调用者不知道大小。同样,readData 返回的 Map 需要是多态的,但是调用者并不知道实际的类型。使用 Map 的函数将知道该类型。

0 投票
2 回答
83 浏览

java - 使用 Java 的参数化类型和多态性处理此通用编程场景的方法

假设我有一个界面:

以及实现该接口的对象:

我希望有一个通用函数,它以Map<Id, Foo>.

我还希望将成员变量private Map<Integer, Bar> barMap设置为此映射的返回值。

以下:

是合法的。

是非法的,因为我无法从 转换Map<Integer, Foo>Map<Integer, Bar>。我也不能将前者投给后者。

我将如何做到这一点?

0 投票
1 回答
611 浏览

scala - Scala中Map键和值类型参数之间的依赖关系

有时,对映射中键和值类型之间的依赖关系进行编码可能很有用。考虑以下类型:

这里序列中的每一对都应该具有相同的类型T。但是这种类型在类似地图的使用方面不是很方便。但是我不能表达这种依赖关系Map[K, V],因为Map有两个独立的类型参数,而且似乎我不能以任何方式“分组”它们以使用单个存在类型。天真的变体

只是强制单一类型T。对于所有MyMap条目,但不是单独针对每个条目。

我相信另一个极端是

但这当然是过于宽泛的定义,它允许键值类型的任意组合。

所以我的问题是,有可能在 Scala 中编码这种类型吗?如果是,如何?