Scala:Java,C#,Scala和C中的高级,开放式和通配符泛型
发布时间:2020-12-16 19:07:39 所属栏目:安全 来源:网络整理
导读:我在C#中进行编程,但是由于其类型系统的限制而感到沮丧.第一件事之一,我了解到 Scala是 Scala有更高的泛型.但是,即使我看了一些文章,博客条目和问题,我仍然不知道更高的泛型是什么.无论如何,我写了一些编译好的Scala代码,这个代码段是否使用更高的类型? abs
我在C#中进行编程,但是由于其类型系统的限制而感到沮丧.第一件事之一,我了解到
Scala是
Scala有更高的泛型.但是,即使我看了一些文章,博客条目和问题,我仍然不知道更高的泛型是什么.无论如何,我写了一些编译好的Scala代码,这个代码段是否使用更高的类型?
abstract class Descrip [T <: DTypes,GeomT[_ <: DTypes] <: GeomBase[_]](newGeom: NewGeom[GeomT]) { type GeomType = GeomT[T] val geomM: GeomT[T] = newGeom.apply[T]() } 然后我想也许我已经在使用更高级的泛型.据我了解,我是,但是现在我明白了,在我听说过Scala之前,我已经很高兴地在C#中使用更高级的类型.这个狙击手是否使用较高种类? namespace ConsoleApplication3 { class Class1<T> { List<List<T>> listlist; } } 所以为了避免进一步的混乱,我认为,对于Java,C#和Scala中的每一个来说,他们允许使用更高级的类型,通配符以及使用开放/部分打开的类型是有用的.由于C#和Scala之间的主要区别似乎是Scala允许使用通配符和开放类型,因为C#没有通配符,并且在使用前需要关闭所有通用类型.我知道他们有什么不同,但我认为将这些功能的存在与C模板中的等同物相关联将是有用的. 以下是正确的?此表已更正为Alexey的答案 Lang: Higher-kind Wild-card Open-types Scala yes yes yes C# no no no Java no yes no C++ yes yes yes 解决方法
不,一种更高级的类型就是这样 class Class1<T> { T<String> foo; // won't compile in actual C# } 即参数必须是通用的通用类型.请注意,在此示例中Class1< IList>应该编译,但Class1< String>或Class1< IDictionary>不应该. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |