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

r - 在 R 中用不同的参数重载 S3 函数

这是对已发布问题的后续行动Create a function with different arguments in R

我创建了一个通用函数,但遇到了将不同的参数集传递给这些函数的问题

现在,我想添加一个model参数modeBuild.ets

和一个不同的参数nnetar

modelBuild函数被另一个函数调用

现在,我们测试一个可重现的例子

结果nnetar错误


为了更正它,我将所有参数作为输入包含在每个modelBuild

现在,所有功能都按预期工作

这是在其中创建泛型函数的最佳实践,R还是有一种方法可以定义具有有限参数的方法,每个methodBuild方法仍然可以调用它,而无需定义特定函数不需要的参数。我正在寻找类似的重载函数行为,如java

这可以在S4R6方法系统中解决吗?

0 投票
0 回答
64 浏览

python - 使包装器对象与@singledispatch 兼容?

假设我有这样的课程:

代码库的其他地方是使用 @singledispatch 装饰器的通用函数。我希望“包装”的实例表现得好像它们从未被包装过。因此,例如,pprint(Wrapper({}))将像pprint({})

我怎样才能做到这一点?

0 投票
2 回答
267 浏览

r - 在R中的通用函数中执行`UseMethod()`之后的代码?

我想要以下通用功能,

  1. 检查这些 allowedFormats (这有效),
  2. 比基于参数 x 的类型执行通用函数(有效)
  3. 在调用后评估语句UseMethod()(不起作用 - 正如预期的那样)

现在它在帮助中说明UseMethod

调用 UseMethod 之后的任何语句都不会被评估,因为 UseMethod 不会返回。

所以这并不奇怪。但是,除了定义一个validate_after()调用validate()后跟的附加函数之外,有没有一种方法可以实现这一点cat(“Validation completed”)

0 投票
1 回答
1516 浏览

python-3.x - 对解压的多个参数进行单次调度

我已经fancyfunction定义了对单个参数做某事。我把它装饰成一个通用函数,这样它就知道如果给它一个元组该做什么。

果然,上面两个函数的有效调用签名是:

我想做的事

我想简化调用签名,这样我就不需要额外的括号:

为了做到这一点,我需要重载函数来解包它的位置参数:

当然,上面的最后一个代码片段不起作用。这样做:

将调用泛型函数而不是重载函数。

是否可以singledispatch识别装饰函数是使用*-form of arguments 调用的?PS这种呼叫签名的正式名称是什么?

0 投票
2 回答
57 浏览

java - 在泛型类型中使用方法

考虑这个类:

我想在另一个使用泛型类型的函数中使用“method_a”来获取 A 类。例如:

我收到错误“找不到符号” m.method_a()。这种方法是否可行,或者是否有任何类似的方法?

0 投票
2 回答
770 浏览

typescript - Typescript - 如何在 switch 语句中缩小泛型类型的可能性?

我正在尝试编写一个函数,该函数将根据传递的键和参数执行特定的计算。我还想强制传递的键和参数之间的关系,所以我使用了一个带有约束的通用函数:

也许我以错误的方式考虑这个问题,但似乎打字稿应该能够缩小 switch 语句中的泛型类型。我可以让它工作的唯一方法就是这种尴尬:

谁能解释为什么#1 不起作用或提供替代解决方案?

0 投票
1 回答
142 浏览

r - 如何在 R6 对象中调度 summary() 方法

我正在使用 R6 构建一个对象,该对象的字段包括数据框和其他信息。
我定义了第一种方法$print(),我可以调用它,obj1$print()或者print(obj1)两种方法都可以正常工作。

我定义了第二种方法$summary(),它是一个与以下相同的通用函数$print():在这种情况下,调用obj1$summary()按预期工作:

summary(obj1)返回错误:

对象[[i]] 中的错误:设置环境子集的参数错误

示例代码如下:

我的理解是,在一个对象中,您可以定义与泛型函数同名的方法,并且这些方法会根据对象的类自动分派给函数,就像$print(). 这不正确吗?
为什么相同的方法不适用于$summary()? 我该如何解决?

非常感谢您的帮助。

0 投票
1 回答
96 浏览

vb.net - 在递归函数中调用作为参数传递的泛型函数

AddressOf我的愿望是通过一个输入参数按名称运行给定的函数,例如Function Foo(x as Integer) As Integer. 我在递归函数中需要的两个输入是函数名_name As String和某种类型的对象 t _list As t(整数、双精度、列表(整数)等)。目标是处理具有函数名称的元素或元素列表,因为有多次我需要通过给定函数处理列表,并且我不希望在每个位置复制列表处理代码。我试图在这种没有完全崩溃的函数(如下)中调用我最好的方法导致了这个错误:

警告:List.Test 操作失败。重载解析失败,因为无法使用以下参数调用公共“ProcessList”:“公共共享函数 ProcessList(Of t)(_func As Func(Of Object,t), _list As System.Object) As IEnumerable(Of t)”:参数匹配参数“_func”的类型参数推断失败。

作为参考,我发现了一段 Python 代码可以有效地满足我的需要,但是我对这个方向的翻译(Python 到 VB.net)有点生疏,而且我对这种类型的编程并不熟悉VB.net。Python 代码段是:

任何关于我需要如何调用这个函数的帮助,或者如果我的方法有缺陷如何重做这个函数,将不胜感激!

更新:

我重新检查了我是如何调用函数的,以及基于@djv 的我的方法正在工作的信息的其他一些事情。首先,由于我如何与这些函数交互的性质,我必须通过以下方式公开上述函数:

我现在也收到错误消息:

警告:List.Test 操作失败。无法将“System.Int32”类型的对象转换为“System.Collections.Generic.IList`1[System.Int32]”类型。

此时的问题可能在于我调用 ProcessList 函数的方法,而不是我想的函数本身。我正在与一个对自己调用 ProcessList 不满意的 GUI 进行交互,所以我需要这个中间“帮助器”函数,我显然没有正确使用它。

0 投票
0 回答
46 浏览

python - 如何编写根据传递的 pandas 列 dtype 行为不同的通用函数

我正在尝试使用 来自 functools的singledispatch编写一个通用函数。我希望函数根据传递参数的类型表现出不同的行为——在这种情况下,它将是一列数据框,可以是不同的 dtype:int64、float64、object、bool 等。

我试图通过实验做一些基本的事情:

但显然我得到一个错误,因为 python 不查看列的 dtype 属性。

有没有办法解决它?

我会很感激帮助。

0 投票
1 回答
348 浏览

generics - 浮点和双精度的 Kotlin 通用函数

以下函数可以编译,但只能与 Doubles 一起使用:

我也希望能够将该函数与 Floats 一起使用,所以我尝试将它变成一个通用函数:

但这不起作用,因为转换为 T 会导致警告“未经检查的转换:双倍转换为 T”。

如何正确地为 Float 和 Double 编写通用函数?