【问题标题】:Scala Compile ErrorScala 编译错误
【发布时间】:2015-06-29 10:33:44
【问题描述】:

我在构建以下代码时遇到了麻烦:

type graph_t = scala.collection.mutable.Map[Long, (Long, Float)];
var graph : graph_t = graph_t();

但是,它确实可以通过将 graph_t() 替换为原始类型来工作:

var graph : graph_t = scala.collection.mutable.Map[Long, (Long, Float)] ();

任何答案将不胜感激。

【问题讨论】:

    标签: scala


    【解决方案1】:

    Scala 知道两个命名空间:类型和值。类型定义了值的能力,值是您调用方法的对象。

    graph_t() 是一个方法调用(apply 方法),但是你没有定义一个名为 graph_t 的值,你定义了一个名为 graph_t 的类型,并且你不能在类型上调用方法。

    scala.collection.mutable.Map[Long, (Long, Float)] () 起作用的原因是因为scala.collection.mutable.Map 既是类型又是值。

    【讨论】:

      【解决方案2】:

      这很有趣。试试这个:

      type s = String;
      var x = s()
      

      你得到同样的错误:未找到。

      那是因为类名既是类型名又是构造函数名,但类型名不一定是构造函数名。

      在这种情况下,函数 Map 实际上构造了 Map 抽象类的具体实现。

      【讨论】:

        猜你喜欢
        • 2011-11-12
        • 2021-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多