generics 相关问题

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

C# 中的语法歧义

表达式 (A < B, C > D) 是一个包含两个元素的元组,每个元素都是一个比较。 表达式 (A D, E) 是一个包含两个元素的元组,第一个元素是声明表达式...

回答 1 投票 0

使 Swift 泛型方法采用可选或未包装的关联类型

我有以下代码,基本上将字符串转换为适用的枚举: func 值(对于键:字符串)-> 字符串? { 返回值(用于:键).first } ...

回答 1 投票 0

在 C# 中继承的类类型上递归获取GenericArguments?

在 C# 中我有 Gen1 类 {} Gen2 类:Gen1 {} 类 Ins:Gen2 {} var ins = new Ins(); 类型 insType = ins.GetType(); 我怎样才能得到

回答 1 投票 0

在Scala 3宏中使用upickle读取

尝试编写一个通用宏,用于使用 Scala 3 中读取的 uPickle 反序列化案例类: inline def parseJson[T:Type](x: Expr[String])(使用引号): Either[String, Expr[T]] = '{ 尝试 对...

回答 1 投票 0

拥抱 Swift 泛型问题,一些纽约键盘。协议与 func 关联类型

在wwdc2022中,苹果使用静态函数来创建模型,稍后在 type(of: ) 中使用。 这是视频https://developer.apple.com/videos/play/wwdc2022/110352/ 我想简化示例,但我得到了......

回答 1 投票 0

仅使用“Bar”从“type Bar = Set<Foo>”中提取“Foo”的实用程序类型

我正在寻找一种实用程序类型,它允许我提取集合的通用参数,但我只有可用的类型集,所以基本上 输入 Bar = Set; 输入 Baz = SomethingMa...

回答 1 投票 0

为 Option<T> 实现通用 TryFrom<T> 不起作用

我使用 TryFrom 将我的类型转换为一些具体类型。 我尝试将 Option 的 TryFrom 实现为一揽子实现,其中 T 指代那些具体类型,但我不能...

回答 1 投票 0

如何传递 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

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