generics 相关问题

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

尝试使用通用 UITableViewCell 时出错

我正在尝试制作一个可重用的 UITableView。我将传入 item 和 UITableViewCell 的泛型。但是,当我尝试将单元格转换为 C 时出现错误,并且不知道如何解决此问题。 我...

回答 1 投票 0

将 C# 中的 INumber<T> 转换为浮点数? .net 7 或更高版本

有没有办法将整数转换为适当的浮点数并返回?一些获取和返回整数的函数在计算过程中需要浮点数。 看看这个: 无效主() { 插值。

回答 1 投票 0

C# 泛型 - 约束泛型方法参数具有特定的静态方法

我正在使用自动生成的代码类,其中每个 Foo 类都有一个等效的 FooSerializer 类,具有静态 Serialize(Foo data) 方法。 我想写一个可以执行的辅助函数...

回答 1 投票 0

在自定义环境中定义通用函数

过去两天我试图在自己的环境中定义一个通用函数,但不知何故我没能做到。 首先,一些代码来演示我的问题: # 我的自定义环境 我的...

回答 2 投票 0

Object-Equals 在编译时强制使用相同类型

我想知道是否可以添加类似 Objects.equals() 之类的东西来允许编译时检查类型。 注意:我知道,这不是你一直想做的事情,但我认为它有它的......

回答 2 投票 0

在 C# 中将 Int 转换为通用枚举

类似于 C# 中的将 int 转换为枚举,但我的枚举是通用类型参数。 处理这个问题的最佳方法是什么? 例子: private T ConvertEnum(int i) 其中 T : struct, IConvertible {

回答 10 投票 0

将 ShapeStyle 保存到 swift 中的变量

在我的应用程序中,我有各种按钮。它们具有许多共同的品质,但颜色有所不同。我正在尝试编写一个包含每个 ButtonStyles 的类,以明确唯一不同的东西......

回答 1 投票 0

SwiftUI 使用参数包反转 @ViewBuilder 中视图的顺序

尝试使用参数包来避免重复此功能 @ViewBuilder public func Group(反转:Bool,@ViewBuilder 内容:() -> TupleView<(C0, C1, C2, C3...

回答 1 投票 0

解码仅有条件“可编码”的 Swift 类型

我有一个 Swift 类,它可能是也可能不是可编码的。当它是可编码的时,我希望能够从文件加载它。这是一个简单的例子...... 协议 P { 函数加载() } 最后A班&...

回答 1 投票 0

Java 泛型通配符:<? extends Number> 与 <T extends Number>

这2个功能有什么区别? 静态无效 gPrint(List l) { 对于(数字n:l){ System.out.println(n); } } 静态 这2个功能有什么区别? static void gPrint(List<? extends Number> l) { for (Number n : l) { System.out.println(n); } } static <T extends Number> void gPrintA(List<T> l) { for (Number n : l) { System.out.println(n); } } 我看到相同的输出。 在这种情况下没有区别,因为 T 再也不会被使用。 声明T的原因是为了让你可以再次引用它,从而将两个参数类型,或者一个返回类型绑定在一起。 区别在于使用通配符时不能引用 T。 您现在还没有,所以“没有区别”,但您可以通过以下方式使用 T 来有所作为: static <T extends Number> T getElement(List<T> l) { for (T t : l) { if (some condition) return t; } return null; } 这将返回与传入的内容相同的类型。例如,这些都将编译: Integer x = getElement(integerList); Float y = getElement(floatList); T 是有界类型,即无论您使用什么类型,都必须坚持扩展 Number 的特定类型,例如如果将 Double 类型传递给列表,则不能将 Short 类型传递给它,因为 T 属于 Double 类型,并且列表已受该类型限制。相反,如果您使用 ? (wildcard),则可以使用扩展 Number 的“任何”类型(将 Short 和 Double 添加到该列表中)。 Java 泛型教程的上限通配符部分很好地描述了为什么我们使用上限通配符。 正如你所知; Integer、Long、Double 以及其他一些类都是从 Number 类扩展而来的。换句话说,它们都是 Number 的子类型。因此,你可以说“Integer is a Number”、“Double is a Number”等等。 然而,List 与 List、List 等之间不存在相同的关系。换句话说,List 不是 List、List 等的基类型。 因此,假设您想要编写必须能够与所有这些类型的 List 一起使用的方法。换句话说,您的方法应该有一个列表参数,可以是 List、List、List 等。在这种情况下,您必须 使用上限通配符。 总而言之,List是List、List、List等的基础类型 考虑以下示例: import java.util.*; public class WildCardDemo { public static double sum1 (List<Number> list) { double result = 0.0; for (Number n : list) { result += n.doubleValue(); } return result; } public static <T extends Number> double sum2 (List<T> list) { double result = 0.0; for (Number n : list) { result += n.doubleValue(); } return result; } public static double sum3 (List<? extends Number> list) { double result = 0.0; for (Number n : list) { result += n.doubleValue(); } return result; } public static void main(String[] args) { List<Double> numList = Arrays.asList(1.0, 2.0, 3.0); //System.out.println(sum1(numList)); // Compiler Error !!! incompatible types: List<Double> cannot be converted to List<Number> System.out.println(sum2(numList)); // This works System.out.println(sum3(numList)); // This works } } 当您使用 T 时,您可以在列表上执行所有类型的操作。但使用时无法进行添加。 T - 与具有完全访问权限的对象引用相同 ? - 给予部分访问权限 static void gPrint(List<? extends Number> l) { l.add(1); //Will give error for (Number n : l) { System.out.println(n); } static <T extends Number> void gPrintA(List<T> l) { l.add((T)1); //We can add for (Number n : l) { System.out.println(n); }

回答 5 投票 0

Java 8 Comparator 比较静态函数

Comparator类中的比较源代码 公共静态>比较器比较( 功能 keyExtract...

回答 3 投票 0

防止 Byte Buddy 在实现参数化类型时具体化类型参数

这个机会不大,但我之前在这里得到了很多很棒的字节好友建议,所以我希望我能再次幸运。 背景是实验编译器的一个棘手的引导场景,其中

回答 1 投票 0

无法将泛型结构类型转换为golang中的泛型接口类型

假设有一个通用接口: 类型数据包接口{ 内容() int } 类型 Recycler[Tany] 接口 { 获取()*T } 及其实施: 类型数据包结构体{ 内容整数 } 类型

回答 1 投票 0

如何使用从 Python 中的联合类型派生的别名来约束泛型类型

我正在尝试改进一个组合两个相同类型值的函数,目前支持 int 和 str。这是我当前的实现: def组合[T:(int,str)](a:T,b:T)-> T: 我...

回答 2 投票 0

如何使用 Union 类型的别名类型来约束泛型

我正在尝试改进一个组合两个相同类型值的函数,目前支持 int 和 str。这是我当前的实现: def组合[T:(int,str)](a:T,b:T)-> T: 我...

回答 2 投票 0

如何使用选项类型的别名类型来约束泛型

我正在尝试改进一个组合两个相同类型值的函数,目前支持 int 和 str。这是我当前的实现: def组合[T:(int,str)](a:T,b:T)-> T: 我...

回答 2 投票 0

如何用别名类型约束泛型

我正在尝试改进一个组合两个相同类型值的函数,目前支持 int 和 str。这是我当前的实现: def组合[T:(int,str)](a:T,b:T)-> T: 我...

回答 2 投票 0

Swift 执行图:协议 + 泛型僵局

我正在尝试创建一个由节点组成的通用非循环执行图。每个节点有 0 个或多个输入和输出。每个输入和输出都是针对特定对象类型(Double、UIImage、Str...

回答 1 投票 0

Dart 中冻结、重载构造函数或相关联合值 union 的区分类型联合

我想知道在Flutter / Dart中是否有任何好的方法来解决以下问题。 我想使用冻结包将结果类型定义为可区分联合。 我来介绍...

回答 1 投票 0

在通用可识别协议上使用 ForEach 的 SwiftUI 会导致 LLDB RPC 服务器崩溃

在 Xcode 16.0 中,我创建了一个协议(通常代表一个枚举),并在另一个可识别协议中使用它作为 id。当我在 ForEach 循环中使用它时,我收到一条错误消息...

回答 1 投票 0

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