问题标签 [generic-function]

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

common-lisp - 用泛型函数替换普通函数

我想将 elt、nth 和 mapcar 之类的名称与我正在原型设计的新数据结构一起使用,但是这些名称指定了普通函数,因此我认为需要将其重新定义为通用函数。

重新定义这些名称大概是不好的形式?

有没有办法告诉 defgeneric 不要产生程序错误并继续替换函数绑定?

这些不是通用功能还是只是历史性的,有充分的理由吗?

请问这里被认为的智慧和最佳实践是什么?

0 投票
1 回答
81 浏览

r - 如何更改通用函数图中的参数?

为什么我的代码不能正常工作。如何正确地将参数 hist.args = NULL, plot.args = NULL 传递给 plot.gevp 函数内的函数 plot 和 hist?

当我调用函数时:

我得到了错误:

我该如何解决这个问题?

0 投票
2 回答
136 浏览

r - 我可以在 R 中为多个类的多个对象声明一个通用函数,例如“绘图”或“摘要”吗?

就像,我有四个 class gevpgpdp和其他两个,我创建了通用函数,plot并且summary为每个四个类。我想知道是否可以只创建一个通用函数plot,并且summary对于四个类,就像在里面一样,我要选择我想要的类的对象。

0 投票
2 回答
1814 浏览

swift - 使类扩展符合通用协议功能

* 精简版 *

如何使类(扩展)符合通用协议函数?

* 长版 *

这是支持分页集合的数据结构的一小部分,

这是具有“真实”案例的协议的实现:

得到如下错误(1):

类型“人”不符合协议“页面”

协议需要嵌套类型“PageItemType”

我也试过让它明确,但我得到了一个不同的错误:

得到如下错误(2):

无法将“Person”类型的返回表达式转换为“PageItemType”类型

所以:*如何让itemAt函数返回 PageItemType 类型别名的有效类型?

* 奖金 *

价值 50 的奖励问题(如果答案超过一行,我将打开一个新问题):参考第一个代码片段PagedCollection

  • 假设每个 Page 实现总是有一个已知的 Pageable 协议对象类型的实现
  • 有没有办法避免声明ItemType:Pageable?或者至少用一个where条款来强制执行它?
0 投票
0 回答
51 浏览

r - 如何通过在 R 中输入 X 来显示“X”?

如何将参数的对象名称捕获到通用函数调用?

一个玩具示例将阐明问题,并且据我所知,核心问题。考虑某个 S3 类的对象:

对于SomeClass对象,我想创建一个简单地打印对象名称print的(愚蠢的)方法。特别是,当我在控制台输入时,我想看到名称:XX

我尝试使用以下方法来实现这一点:

正如预期的那样,调用print(X)给出了。X但是只要X在控制台输入(大写)就会给出x(小写):

是什么赋予了?我猜这x是从泛型函数的参数名称派生的print。我必须如何修改print.SomeClass才能直接调用XX

问题似乎是在控制台上通过裸调用显示对象和通过显示对象之间存在差异print——它们并不完全等效。我怀疑,我可能需要substitute()在调用堆栈的其他地方提供特定环境。但在那种情况下,我不知道哪一个会弥合差异。

0 投票
2 回答
288 浏览

lisp - 不能在泛型函数方法中使用变量吗?(关闭/LISP)

我正在学习 CLOS 中的泛型函数。

由于我在教科书和网上找到的示例类型,我变得非常困惑。这些示例总是使用有多个分派的事实。根据参数类型,执行不同的计算。但是,为什么这些论点本身从未在示例中使用过?

来自维基百科的示例代码

在上面的示例中,您可以看到方法本身从未实际使用xory变量。所有这些示例从不使用变量是巧合吗?它们可以使用吗?

此外,它写在Wikipedia上:

方法与类分开定义,它们对类槽没有特殊的访问权限(例如“this”、“self”或“protected”)。

好的,所以方法没有“this”,因为它们不属于一个类。但是为什么泛型函数方法可以有一个接收器呢?接收器不是类似于类中的'this'吗?

0 投票
1 回答
485 浏览

ios - 核心数据/Swift 3.0

这是一个已经工作了很长时间的函数(对于向 Core Data 插入信息非常有用)。自从我搬到 Swift 3.0 之后,它就遇到了麻烦,在第一行就崩溃了。我错过了什么?

除此之外,我在调试器控制台中收到此错误:

我可以看到以下内容以及汇编代码:

0 投票
1 回答
400 浏览

methods - Common Lisp:从泛型函数中提取方法

有没有办法从 Common Lisp 中的泛型函数中提取方法列表?
例如:

更具体地说,我的目标是 ECL,所以如果这可以通过 C API 完成 - 没关系。
我需要这个来做下一个技巧:

0 投票
2 回答
746 浏览

generics - 使用具体类型调用泛型闭包

是否可以使用具有具体结构的具体类型调用泛型函数?

这是我想做的一个小例子:

我无法摆脱泛型参数V,因为我要解决的实际问题涉及更多。此外,我无法创建包装特征,因为有时我的签名很弱,有时f需要更多特征。

0 投票
0 回答
80 浏览

r - 覆盖非默认方法并避免递归

在使用泛型函数系统调度调用原始方法的修改方法时,哪些编程原则可以帮助我避免递归?

背景

由于此处bit64::as.integer64.character()讨论的原因,我对 的行为不满意,因此我编写了一个解决方法函数,该函数调用然后对输出进行一些更改:bit64::as.integer64()

到目前为止,一切都很好。

接下来,作为一项学习练习,我尝试as.integer64.character()使用此解决方法覆盖该方法。(如果我在这篇文章中滥用了任何 OOP 术语,我深表歉意,请纠正我。)

我试过的

第一次尝试(不起作用,无限递归)

天真地,我推断由于bit64::as.integer64()在我的解决方法函数中调用泛型函数时我使命名空间显式,我应该能够定义一个具有相同名称的方法,但是在我可以调用而不启动无限递归的全局环境中.

第二次尝试(有效,但我不明白为什么)

bit64::as.integer64(s)用对字符串方法的调用替换对泛型函数的调用bit64::as.integer64.character(s)解决了这个问题。

问题回顾

当第一次失败时,为什么第二次尝试有效?我不理解的命名空间和/或调度是什么?