![]() |
1
4
尽管有人可能会发现 实际解决方法 像斯蒂芬·克利里的
在可以直接指定泛型的地方,从理论上讲,这是一个相当有趣的问题,C的当前类型系统无法解决这个问题。 一种你称之为 本身是通用的 ,被称为 高等级类型 . 请考虑以下示例(伪C):
在您建议的系统中,一个呼叫可能如下所示:
但问题是:我们如何键入函数
但是这个不行
. 我们不能参数化
我们需要的是一个符号
在您的情况下,您可以键入
我所知道的唯一支持这种泛型的语言是haskell:
在上看到这个haskellwiki条目
polymorphism
关于这个
|
![]() |
2
8
你不能只根据返回值来重载任何东西,所以这包括变量。 但是,您可以去掉该lambda表达式并编写一个实函数:
然后你想怎么称呼它:
|
![]() |
3
0
这是不可能的,因为代表 实例 在C中,不能有泛型参数。最接近的方法是将类型对象作为常规参数传递并使用反射。:( 在许多情况下,铸造 动态 帮助消除反射的痛苦,但是 动态 在创建新实例(如示例)时没有帮助。 |
![]() |
4
-1
不能这样做,因为泛型类型参数必须在运行时已知。必须使用Activator类:
你想做什么就做什么。您可以按以下方式编写:
编辑 布林迪的解决方案更好。 |
![]() |
Glory Raj · 有什么方法可以使这两个块具有共同的功能吗 2 年前 |
![]() |
milczi · Swift通用无强制展开向下投射 6 年前 |
![]() |
bugs · Typescript-泛型类型扩展自身 6 年前 |
![]() |
John Bustos · C#通用工厂模式,不说明通用工厂模式的类型 6 年前 |
![]() |
Blankdud · 具有默认数据的通用对象创建方法 6 年前 |
![]() |
Tim Hutchison · 从泛型对象列表中读取泛型值 6 年前 |