generics 相关问题

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

保留泛型类型以供以后重用

我想要的是:UIKit 中的 SwiftUI 风格的 .padding 方法。 我尝试过的: 类 Padding:UIView { var 基数:T { viewToPad } 让 defaultPadding: UIEdgeInsets = .init(top: 8,...

回答 1 投票 0

如何使用 PhpStan 输入自定义映射构造函数,以便在 BackedEnum 值上索引的实例将保留确切的键类型?

抱歉标题令人困惑,我不确定如何最好地总结问题。 我有一个采用数组键类型键的自定义地图类,并且我正在尝试创建一个具有更严格值的实例...

回答 1 投票 0

我如何接受我的结构的通用特征实现并传播它?

我有一个案例,我的结构之一 Grid 有一个特征监听器实现的 Vec。首次创建 Grid 时,此列表中填充有 Relay 实例。 中继是一个传播的监听器

回答 1 投票 0

如何创建 Dapper QueryMultipleAsync 的泛型方法?

我正在尝试创建一个通用方法来使用 Dapper 获取多个数据集。我将指定预期数据类型的列表,该方法将为我提供特定数据类型的对象列表...

回答 1 投票 0

包装泛型函数

有没有办法将泛型函数包装在类中并保留泛型? 这是我的想法: const func = (p: G) => p; 类功能 {

回答 1 投票 0

如何避免重复调用具有适合相同泛型参数的不同类型参数的函数?

我对 Rust 很陌生,所以我立刻承认可能有更好的第三种方法来做到这一点,但我对更有经验的语言者所说的话非常感兴趣。 给定一个通用的

回答 1 投票 0

如何防止错误地以错误的顺序传递参数

代码库采用Java。我需要有条件地从两个不同的存储中读取数据。 接口阅读器 { T 读(); } T foo(Reader reader1, Reader reader2) { // 读你...

回答 1 投票 0

可以为空类型作为泛型参数吗?

我想做这样的事情: myYear = record.GetValueOrNull("myYear"), 请注意可空类型作为泛型参数。 由于 GetValueOrNull 函数可能返回 null 我的

回答 14 投票 0

C# 交叉引用泛型类

我希望两个泛型类能够相互引用。我似乎无法编译任何东西。尝试过这个: 班级计划 { 静态无效主(字符串[]参数) { } 公开课

回答 5 投票 0

为什么这段带有泛型的java代码无法编译

测试.java: 导入java.util.ArrayList; 导入java.util.Stack; 导入 java.util.Iterator; 包装类 { 公共T内容; 公共 ArrayList 子级; } 公共课...

回答 3 投票 0

如何从带有约束的泛型类中获取属性的名称

如何从具有约束的泛型类中获取属性名称? 我有一个简单的类定义如下: 简单类 { //... } 我有一个定义了约束的通用类...

回答 1 投票 0

泛型、重载解析和委托(抱歉,找不到更好的标题)[重复]

可能的重复: 为什么 Func 与 Func> 不明确? 我注意到泛型有一个非常奇怪的重载解析问题...... 考虑以下方法: 圣...

回答 2 投票 0

返回泛型类型的默认值

如何为泛型类型 T 返回 nil? func (列表 *mylist[T]) pop() T { if list.first != nil { 数据 := 列表.first.数据 列表.第一个 = 列表.第一个.下一个 返回数据 ...

回答 3 投票 0

返回空泛型类型

我有一堂课: 公共接口IA { T值?获取值(); } 公共A级:IA { 公共 T 值?获取值() { ... if(值不为空) ...

回答 2 投票 0

对于传入 T 可以是类或结构的泛型方法,是否可以返回可为 null 的 T?

虚拟代码: // TSource1 elementObj 可以是结构体,也可以是类对象,并且永远不能是可为空的结构体或 null(因为在这种情况下方法内部代码将创建异常) 公开

回答 1 投票 0

为什么java集合中的泛型这么奇怪?

例如java.util.Collections中的检查方法 公共静态int二元搜索(列表列表,T键,比较器c) 为什么我可以这样定义: 噗...

回答 2 投票 0

在泛型方法中与 Int32 类型一起使用时,无法从用法中推断出 UInt32 和 UInt64 类型

最初,当我使用 Assert.AreEqual 方法通过 UnitTest 框架测试代码时,我遇到了这个问题。我注意到,对于 UInt32 和 UInt64 类型,选择了不同的 AreEqual 重载(

回答 2 投票 0

在 Zig 中,如何从另一个函数返回一个函数

我知道我可以通过以下方式创建通用函数: fn func(T: 类型, 值 1: T, 值 2: T) i8, 然而,我正在探索函数如何返回函数的想法。 下面是一个例子。之后

回答 1 投票 0

无法实例化类型 Tree<? super Number>

我有这门课 公共类树 { //这棵树的分支列表 私有列表>分支=新ArrayList>(); 酒吧...

回答 2 投票 0

定义一个泛型 C# 函数,返回与其参数相同的集合类型

假设我想编写一个 .NET 扩展 .NullIfEmpty() ,它应该适用于任何实现 IReadOnlyCollection 的类型。 我可以通过写来做到这一点 公共静态 IReadOnlyCollection 假设我想编写一个 .NET 扩展 .NullIfEmpty(),它应该适用于任何实现 IReadOnlyCollection<T> 的类型。 我可以通过写作来做到这一点 public static IReadOnlyCollection<E> NullIfEmpty<E>(this IReadOnlyCollection<E> c) => c.Count == 0 ? null : c; 但这会丢弃集合的类型,这是非常适得其反的。 要返回参数的类型,泛型类型必须是集合的类型。但现在我不能限制这种类型来实现IReadOnlyCollection<> (并且没有非通用接口来仅获取计数 - 另一个悲伤的故事)。 public static C NullIfEmpty<C>(this C c) where C : IReadOnlyCollection<> // error! => c.Count == 0 ? null : c; 所以,我需要元素类型的另一个通用参数。 但是当我写作时 public static C NullIfEmpty<C, E>(this C collection) where C : IReadOnlyCollection<E> => c.Count == 0 ? null : c; 类型推断失败,例如List<string>。 显然它不能从单个参数推断出两个类型参数。 这样的函数怎么写呢?难道就不可能吗? 上下文是 .NET Framework 4.8.1,即 C# 7.3。 我认为您无法像这样推断出两种类型参数,不。 如果您只需要引用类型的集合,并且您可以使用协方差: public static C NullIfEmpty<C>(this C collection) where C : class, IReadOnlyList<object> => collection.Count() == 0 ? null : collection; 这当然不适用于List<int>等。我还没有得到更好的答案......你可以为非泛型 IEnumerable 编写一个扩展方法,但这需要实际开始枚举: public static C NullIfEmpty2<C>(this C collection) where C : class, IEnumerable { var iterator = collection.GetEnumerator(); try { return iterator.MoveNext() ? collection : null; } finally { (iterator as IDisposable)?.Dispose(); } }

回答 1 投票 0

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