加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

解决方法

This is higher kinded type is it not:

不,一种更高级的类型就是这样

class Class1<T>
{
    T<String> foo; // won't compile in actual C#
}

即参数必须是通用的通用类型.请注意,在此示例中Class1< IList>应该编译,但Class1< String>或Class1< IDictionary>不应该.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读