generics 相关问题

泛型是一种参数多态,可以在各种语言中找到,包括.NET语言,Java和Swift。

如何传递 Type 并通过属性访问它以在 AddDbContext 中使用

我需要创建一个类,在其中可以传入从 DbContext 派生的类型。稍后我需要使用此类将数据库上下文添加到服务中。 我必须使用泛型才能实现此目的吗?我会...

回答 1 投票 0

具有通用绑定的自定义 SwiftUI 控件

我的目标是在 SwiftUI 中创建一个自定义控件,该控件接受对通用值的绑定,而无需将控件的类型本身声明为该类型的通用类型。 例如,我真的很感兴趣

回答 1 投票 0

不要重复从泛型参数中提取的类型

我正在寻找一种方法来避免在以下接口声明中重复 T["uuid"] : 导出接口 Foo { getAll():承诺 我正在寻找一种方法来避免在以下接口声明中重复 T["uuid"]: export interface Foo<T extends { uuid: unknown; name: string } > { getAll(): Promise<T[]>; getAllIn(ids: T["uuid"][]): Promise<T[]>; findOne(id: T["uuid"]): Promise<T | null>; findOneByName(name: string): Promise<T | null>; getOne(id: T["uuid"]): Promise<T>; addOne(item: T): Promise<void>; deleteOne(id: T["uuid"]): Promise<void>; updateOne(item: T): Promise<void>; } 有没有办法获得 T["uuid"] 的别名之类的东西? 不,你不能有本地范围的类型别名。在 microsoft/TypeScript#23188 上有一个对此类功能的长期开放请求,但目前它还不是该语言的一部分。 除非它被实现,否则您的选择是要么创建一个正常作用域的类型别名,例如 type U<T extends { uuid: any }> = T["uuid"]; interface Foo<T extends { uuid: unknown; name: string }> { getAll(): Promise<T[]>; getAllIn(ids: U<T>[]): Promise<T[]>; findOne(id: U<T>): Promise<T | null>; findOneByName(name: string): Promise<T | null>; getOne(id: U<T>): Promise<T>; addOne(item: T): Promise<void>; deleteOne(id: U<T>): Promise<void>; updateOne(item: T): Promise<void>; } 每次提及该类型都可以节省几次击键... 或者,您可以滥用默认类型参数(如上面的 ms/TS#23188 中所述) interface Foo<T extends { uuid: unknown; name: string }, U = T["uuid"]> { getAll(): Promise<T[]>; getAllIn(ids: U[]): Promise<T[]>; findOne(id: U): Promise<T | null>; findOneByName(name: string): Promise<T | null>; getOne(id: U): Promise<T>; addOne(item: T): Promise<void>; deleteOne(id: U): Promise<void>; updateOne(item: T): Promise<void>; } 其中 Foo<T> 相当于 Foo<T, T["uuid"]>,因此相当于您原来的 Foo<T>。但默认设置并不是“真正”为此目的。编译器不能假设 U 将 always 是 T["uuid"],因此可能会发生奇怪的事情(例如,没有什么可以阻止你编写 Foo<{uuid: string, name: string}, number>)。Playground 代码链接

回答 1 投票 0

如何在 Python 中输入带有默认值的通用可调用对象?

在Python中,我有以下函数: T = 类型变量(“T”) def handle_func(x: int, func: Callable[[int], T]) -> T: 返回函数(x) 我可以这样使用它: handle_func(1, lambda x: x ...

回答 1 投票 0

通用切片参数和限制为切片类型的参数有什么区别?

考虑实验包切片。该软件包是实验性的,因此我知道签名可能会发生变化;我用它来说明问题。 考虑来自...的两个函数的签名

回答 2 投票 0

如何统一使用来自不同包且具有相似接口的 Go 类型

我有几组几乎相同结构的类型,每个都有自己的包。例如 包万岁 类型万岁计算器结构体{ } func (d BanzaiCalculator) Start(符号字符串) BanzaiSes...

回答 1 投票 0

有没有办法在Java泛型中模仿OR

编辑:我对示例进行了一些更改以获取想法: 喜欢 ...无需创建通用接口并为 Integer 和 Float 创建子类来实现...

回答 4 投票 0

仅针对特定接口类型(命令)执行 MediatR 预处理器

[注意:这是一个“替换”问题。第一个是基于我的主项目的代码,所以我用一个单一用途项目的代码重做了这个问题,该项目说明了原理

回答 2 投票 0

使用反射将泛型类传递给泛型方法

上下文如下: 我们有一个名为 Body 的基类,以及从基类 Body 继承的许多其他类。 公共课主体{ //... } 公共类A:主体{ //... } 公开课...

回答 1 投票 0

带有泛型返回类型的 func 参数的泛型方法的最小起订量设置

我有一个通用方法,如下所示, 公共接口 IMemoryCacheWithPolicy { TItem GetOrCreate(对象键, Func createItem, CacheItemPrioritypriorityLevel); } 我...

回答 1 投票 0

在 switch 语句中使用 java.lang.Class<?>

,如下所示: public static Model get(Class type, long id ) { 开关(类型) { 案例 FooType.cla...

回答 2 投票 0

返回 T 列表的 Blazor 通用 API

我正在构建一些 blazor 应用程序 并希望有一些通用方法可以从共享项目返回任何类型。 我的想法是: 列出参数.... // ...

回答 2 投票 0

为什么编译器允许我将 Pair<String, String> 类型的对象添加到 Pair<String,Integer> 列表中?

我使用 Pair 类来存储有关体育场的信息,即体育场的名称及其容量。 让我们看第一个例子。我创建一个列表并用参数化的实例填充它......

回答 1 投票 0

为什么这个Function<? extends T, Long>不能应用到Java流的map方法上?

public ListleafIds(Map>childrenMap,LongparentId,FunctionidGetter){ if (!childrenMap.containsKey(

回答 1 投票 0

通过 List<subclass><superclass> 从 List<?> 向上转型为 List

我有一个A类和一个B类扩展A 在另一个 C 类中我有一个字段 私有列表 listB; 现在,由于一些不寻常的原因,我必须用 C 实现这个方法 公开列表 g...

回答 3 投票 0

Hashtable 的通用版本是什么?

我一直在学习.NET 中泛型的基础知识。但是,我没有看到 Hashtable 的通用等效项。请分享一些用于创建通用哈希表类的示例 C# 代码。

回答 5 投票 0

Kotlin 泛型 lambda 类型不匹配。必填:什么都没有

我在使用 Kotlin 泛型和 lambda 时遇到问题。 基本上我希望我的接口在泛型类型上有一个 lambda 函数。 这是一些示例代码,显示了我想要做的事情。 接口A 我在使用 Kotlin 泛型和 lambda 时遇到问题。 基本上我希望我的接口在泛型类型上有一个 lambda 函数。 这是一些示例代码,显示了我想要做什么。 interface A<T : B, U : C> { fun where(rdm: (T) -> U): A<T, U> } interface B { fun debugB(): C } interface C class D : B { override fun debugB(): F { return F() } fun toto() { } } class F : C class test : A<D, F> { override fun where(rdm: (D) -> F): test { return this } } class main() { init { val test: A<*, *> = test() test.where { q -> q.debugB() } } } 问题是,当我尝试执行以下操作时收到错误消息:test.where { q -> q.debugB() }:Type mismatch. Required: Nothing found: C。 我觉得这真的很奇怪,因为它能够将 q 的类型解析为 B 但它可以找到正确的返回类型。 (我尝试过inout,但都不起作用。) 不确定为什么要在 val test 对象中显式设置星号。通过这样做,您可以防止 test 对象访问 interface B。 允许编译器通过在调用构造函数时简单地删除类型来推断类型。 val test = Test() test.where { q -> q.debugB() }

回答 1 投票 0

属性中的协议,错误协议只能作为通用约束

我正在尝试创建一个继承通用案例,我已经在 Dart 中完成了,它的工作原理如下: // 飞镖 Car 类实现了 Vehicle { 引擎接口?引擎; 存储间...

回答 1 投票 0

使用接受闭包的方法在 Rust 中创建对象安全特征

我想为 Map 创建一个具有以下定义的特征: 酒吧特征图 { fn put(&mut self, k: K, v: V) -> Option; fn upsert...

回答 2 投票 0

泛型开放式和封闭式构造类型

最近我注意到泛型构造类型可以是开放的和封闭的。但我不明白它们的真正含义。能举个简单的例子吗

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.