问题标签 [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 投票
1 回答
71 浏览

r - R:使用单独的内部和外部名称创建 S3 对象

我试图弄清楚如何在 R 中创建具有某些属性的类。基本上我有一个构造函数,它将数据框作为它的第一个参数,然后强制标识某些列或列范围,按名称或列号。此后,我希望我的方法能够引用构造函数中标识的列,但我希望用户仍然能够通过它们的原始名称引用这些列。

从数据框开始:

这是一个加权平均函数,按日期分组。它使用数据框内部的名称进行分组和创建新列。

应用于上面的数据框,产生以下结果:

我的目标是,在使用构造函数将数据框分配给 MyClass 之后,我可以在类函数内部使用分配的名称,就好像数据框已由构造函数中的(非 NULL - NULL 做其他事情)名称重命名一样。所以在调用这个构造函数之后:

这个想法是,下面的方法将产生与上面的 mean_dt 相同的结果。请注意,这只是上面使用构造函数名称的函数。另请注意,在其当前形式下,下面的函数不起作用,因为 R,或者更具体地说,dplyr,无法找到构造函数分配的名称。

问题是是否可以将某些东西添加到构造函数和/或我的方法函数中,理想情况下是标准化形式的东西,这将使 MyClass.mean_dt 和其他方法像对象 X(此处为 STUFF2)已将其列重命名为构造函数中的赋值。我认为它将添加到我标记为“此处需要帮助”的一个或两个位置。

这个问题在两个限制条件下运行。首先是我希望用户能够使用他/她习惯使用的变量名来操作对象,这些变量名更有可能是列开始时的名称。但我想根据一组通用名称编写自己的方法,而不是用户的特殊名称。

第二个是我不想通过复制对象或任何大型列集来实现内部到方法函数的目标,即能够使用指定的名称。我的对象很大——十到二十个演出(未压缩)并不少见——并且指定的列通常会运行几十个,偶尔也会有数百个。尽管如此,我仍然希望编写普通计算机上的人们可以使用的软件。所以我需要尽量减少复制。

0 投票
0 回答
43 浏览

r - R:查找 [ 函数的 data.frame 方法的代码

在 R 中,如何查看 [ 函数的 data.frame 方法的代码?

我在 [.data.frame, [.data.frame, 和[.data.frame 上尝试了通常的普通返回,但它们都不起作用,它们中的任何一个都不能与 getAnywhere() 一起使用。getMethod("[", "data.frame") 也不起作用。<- 本段中的代码名称实际上表示被反引号包围。

我实际上正在寻找标准代码,它可以让您按名称、位置编号向量、逻辑向量或负数来引用列。如果有人可以将我指向更易于访问的位置的此类代码,那么从我的角度来看,这也将构成一个解决方案。

0 投票
1 回答
640 浏览

ios - 如何从 Objective-C 调用 swift 通用函数

请阅读问题。

我知道我们不能按照这个链接从 Objective-C 调用 Swift 泛型方法

但就我而言,我有一个用 Objective-C 和 Swift 编写的项目。有一个用 Swift 编写的网络库,具有通用的 GET、POST、DELETE 方法。例如下面是 GET 方法

其中 ResponseDeserializer 是由少数其他类确认的协议。

现在我的问题是,有没有办法从 Objective-C 调用上述方法,或者我应该为 Objective-C 实现一个新的网络库。

我正在寻找您的宝贵指导。

0 投票
3 回答
160 浏览

swift - 避免在 swift 4 中重复代码

我想创建一个通用函数以避免在使用条件时重复。是否有任何可能的想法来实现这一目标?谢谢

0 投票
1 回答
49 浏览

c# - 避免在泛型函数中指定 T 类型

我有这个通用扩展函数,它将具有特定父类型的对象转换为子类型(在此处找到代码:无法从父类转换为子类):

因此,当我调用此函数时,我需要指定 Parent 和 Child 类类型,例如:

有什么办法可以避免“父”精度?

我想写这个:

0 投票
2 回答
1950 浏览

python - 如何根据传递给函数的数据类型调度 Python 2 函数?

我想根据传递给“调度”函数(例如 using )的参数的数据类型来调度 Python 函数(例如使用dict 方法isinstance())。是否有实施替代方案?最简单的方法是什么?

0 投票
1 回答
261 浏览

lisp - 如何使用“采取”词作为 CLOS 泛型

泛型似乎提供了一个很好的工具,可以提取一个常用词,让它根据你传递的类型作用于事物,事后具有可扩展性。

但是那些已经被使用但没有被定义为通用的常用词呢?如果我尝试定义 REMOVE,例如:

我在 SBCL 中收到错误:

COMMON-LISP:REMOVE 已经命名了普通函数或宏。

是否有一种习惯用法或认可的方式来“泛化”这些内置函数之一?人们会这样做吗?

只是为了看看会发生什么,我尝试用泛型覆盖 REMOVE:

警告:重新定义 COMMON-LISP:REMOVE 在 DEFGENERIC

我不知道是否有一种“好”的方法可以做到这一点,这将通过允许重载给想要赋予单词新含义的特定类型的旧实现。

0 投票
0 回答
58 浏览

r - R - 将 utils::View 重新定义为通用而不与 RStudio 冲突

我已经成功地重新定义utils::View为一个通用函数,这样我就可以在我的包中使用它了。然而,碰巧 RStudio 也在这个函数上定义了某种钩子。

在加载我的包裹之前,我看到:

并寻找该.rs.callAs功能,我得到:

加载我的包后,我看到:

由于tools:rstudio不是直接可见的,我不确定我能做些什么。如果我能以某种方式将它的定义包含在我的包中,我完全不确定我是否可以根据 R 会话是否在 RStudio 中运行而以不同的方式重新定义 View。

对此我显然不是很看好,但我想在放弃之前在这里问一下!

0 投票
1 回答
244 浏览

r - R - 调度到新方法 print.list() 的问题

在我的summarytools包中,我已经成功定义了该print.by方法。但是,即使我对 执行了完全相同的步骤print.list,调度也会失败。

该方法似乎已经注册,以及包中定义的另外两个打印方法:

在命名空间中,我有:

例子

与之比较...

以下是 的内容print.list.R

我已经阅读了几个与泛型函数及其方法有关的文档,但我无法查明问题,也无法找到解决方案。我查看了setMethod()函数和“签名”参数,但由于函数很可能会在没有参数的情况下被调用,所以我看不出这会有什么帮助。

两者之间的一个区别是print.by存在于base包中,而print.list没有。但我无法确定这是否相关。

关于我如何使用这种类型的函数定义的更多背景信息可以在我之前提出的这个问题中找到。

编辑:我尝试了其他一些不起作用的东西......

  • 按照这里的建议,重新定义print.default而不是定义,但它仍然不起作用。print.list
  • 在函数定义()之后添加对 setMethod 的调用setMethod(f = "print", signature = "list", definition = print.list);仍然没有好的结果(我不太确定我得到了“签名”参数应该是什么。我发现关于它的文档相当混乱)。

我开始认为我可能需要对 Roxygen 进行一些改动才能使其正常工作……但是什么改动,我不知道。

非常感谢任何帮助。

0 投票
0 回答
138 浏览

r - 继承的 S4 类的方法选择

我的问题是如何plot()使用我继承的 S4 类的新方法应用通用函数。

我扩展了rstan中现有的 S4 类(其名称为stanfit),比如说,并为扩展的(继承的)S4 类定义了一个新的泛型函数方法,比如说。lowerS4classplotupperS4class

但是,当我将扩展 S4 类对象Note的通用函数应用为.plot()xplot(x)

编辑评论-----------------------------------------------------

遗产

其中foo是为 upperS4class 定义的函数。

定义。为了upperS4class

---编辑评论-------

通过如下更改上述内容,一切顺利。谢谢@JDL。