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

c# - 在 Startup.cs 中添加服务时关于 ASP.NET Core 中 C# 模式的问题

关于此代码来配置服务:

特别是这一行:

如果 AddSingleton 不是像代码片段中那样是一个具有 0 参数的通用函数,是否会有任何语义差异

0 投票
2 回答
84 浏览

function - Common Lisp 中的类型化 lambda 函数

我不知道这有什么实际用途,我只是想到是否有任何东西可以与defmethodfordefun相媲美lambda?像这样的东西

0 投票
1 回答
96 浏览

list - Create generic extension to make a deep copy of a List with Data Class

Hi I'm trying to create a generic function to make a deep copy of list using the copy() method that a Data class provide us.

I'm using the method that I found on other post which returns a list of objects being deep copied:

listDataClass.map{ it.copy() }

But I can't seem to know how to make it as a generic function for data class so I'm really curious to see how'd you make one like this.

0 投票
0 回答
49 浏览

c# - 抽象泛型函数实现

我在使用抽象泛型方法时遇到问题。

抽象方法定义

执行

我在覆盖函数中遇到了 EUser 类的问题。该函数似乎将 EUser 视为 Generic T 仍然只有 BaseEntity 函数可用。ERole 是另一个实现 BaseEntity 的类,我能够在函数中使用该实体的全部功能。如果我想使用 EUser,每次我想使用不在它的父 BaseEntity 中的函数时,我都必须将它类型转换为 EUser。我的目标是将数据读取器传递给子类并让它填写必要的信息,但这很麻烦。我不想花费大量开销类型来转换子类中的所有内容。

这与泛型类不同。如果我实现一个子泛型类,我可以将 EUser 指定给父类,并且仍然具有该实体的全部功能。

有没有其他人对此有疑问,或者我是否错误地实现了抽象泛型函数?

父函数是这样开始的:

然后父类像这样调用函数:

问题必须是 T 用于生成子类方法,因此即使子类方法只会接受和使用 EUser。它仍然将其视为方法中的 Generic T。你们有什么建议吗?

这都是因为我有一个 Parent 类,它有几个我不想与任何子类共享的私有字段。通用方法 InitEntity 使用其中一些私有字段。因此,我正在使用通用方法。我可能只需要重新考虑我的实现并解决子泛型类。

编辑:

看起来在 C# 中的通用方法中,变量类型是在调用函数时定义的。如果没有主要的类型转换,您似乎无法在函数级别进一步定义该类型。如果您尝试像我一样在子类函数中实现类型,一切都会编译并运行,但是您在子类中的类型仍将被视为传入的类型。对于上面定义的问题,我只需要将泛型更改为类级别,而不仅仅是功能。做一个抽象的泛型函数。子函数需要保留传入的泛型 T,然后在函数体中进行类型转换。

0 投票
1 回答
72 浏览

typescript - 如何在函数中具有必需和可选类型参数,并且仍然具有用于记录查找的工作类型推断?

如何使Y函数中的必需类型参数与另一个类型参数一起工作,K后者仅用作记录R = {a: 'aaa', b: 'bbb'}查找中的键并且不应该显式提供?类型参数K应该从函数的第一个参数的值推断k出来foo。然后我想K用来查找一个类型,R以便我可以将它用于函数的其他参数。

为了只允许需要第一个类型参数YK参数需要有一个默认值。但是这个默认值打破了R[K]when 的推断,而不是根据kieR[typeof k]的值推断"aaa"if kwas "a",它使用默认的KieR[keyof R]解析为记录中所有类型的联合,R"aaa" | "bbb"忽略k

是否可以在没有显式传递的情况下从值解析y: R[keyof K]where的类型推断,但仍然允许所需的类型参数?KkKY

我只能通过对函数进行柯里化来使其工作,因此每个类型参数都属于一个单独的函数:

0 投票
1 回答
30 浏览

typescript - 泛型函数参数仅限于 T 的属性

我有一个uniqBy这样定义的函数:

这会根据输入数组强类型化我的返回值,但我也希望key参数是强类型化的,这样如果我尝试传入不存在的属性时会出现编译时错误T。当前使用示例:

_checkups是以下数组:

如果尝试执行以下操作,我希望它:

给了我一个编译时错误(以及属性完成时的 IntelliSense)。key为了做到这一点,我将如何在参数中定义?

这将返回一个只有唯一值的项目数组(在重复的情况下CatDescription使用第一个对象)。CatDescription

我不知道这叫什么,它不是Predicate<T>用于过滤并返回布尔值的。

0 投票
1 回答
609 浏览

amazon-web-services - 如何在 AWS 胶水中使用从一个胶水脚本到另一个胶水脚本的函数

我有一个 AWS 胶水 pyspark 脚本,例如 scriptA.py。在这个脚本中,我定义了一些通用函数,例如 readSourceData()

def readSourceData(参数1,参数2):

//函数逻辑

现在我想在我的 secong glue pyspark 脚本 scriptB.py 中使用这个通用函数。

我有很多这样的通用功能。如何导入这些函数并在其他脚本中使用它们?

0 投票
0 回答
28 浏览

typescript - 如何制作一个接受返回自定义接口的特定属性的通用函数

我想定义一个接受任何类型或通知对象的通用函数。这个对象有一个method属性。该函数应该接受任何具有方法属性的输出,并且每个输出都有自己的方法类型。我需要返回一个类型,这是类:

但是函数中有一个打字稿错误:

输入'{时间戳:数字;方法:T;}' 不可分配给类型 'U'。'U' 可以用与 '{ timestamp: number; 无关的任意类型实例化。方法:T;}'.ts(2322)

0 投票
0 回答
25 浏览

java - 用整数隐藏类型泛型函数类型参数

为什么以下成功将 ArrayList 发送到 List?

我知道类型擦除,并且所有通用列表基本上都是运行时的 Object 列表。

究竟是什么

以我的 C++ 经验,起初我认为这是模板函数专业化。

我是否只是用 Integer 这个词隐藏了参数类型名称(例如 T),而这实际上是一个与 Integer 无关的通用函数?如果是这样,为什么允许使用名为“整数”的类型参数进行隐藏?

0 投票
4 回答
118 浏览

kotlin - 如何将不可为空的类型传递给具有可空参数的函数?

可以检查可空类型并将其强制转换为不可空类型,但反之则非常困难。

例如:

在我的例子中,我说的是一个带有 Array 参数的函数,其中的内容可以为空,但我要传递给函数的 Array 的内容是不可为空的。这不起作用:

我的问题是如何使这项工作?

我可以将数组转换为可为空的数组,但我不确定这是否是正确的方法。