关于Scala抽象类型的问题

时间:2010-01-02 12:20:12

标签: scala

我有一个简单的问题给你:)  我有以下Scala代码,它编译并给出错误。  实际上我期望代码不被编译,因为它有一个抽象类型的CT。由于scala说无法找到CT类型,因此错误更令人困惑。

class Currency {   type ct=Currency } 
val c = new Currency
println(c.ct)
  

错误:值ct不是货币

的成员

感谢您的评论,

谢谢, -A

PS - 使用sala 2.7.7

2 个答案:

答案 0 :(得分:14)

仔细查看错误消息:“value ct不是Currency的成员”。这里的“价值”很重要。货币具有类型成员ct,但不是值成员ct。所以c.ct是一个类型,而不是表达式。

答案 1 :(得分:3)

在这种情况下,类型ct不是抽象类型,而是Currency类型的简单类型别名。因此,表达式应该编译。

关于println表达式,您使用c.ct作为要打印的值(通过调用其toString)。这是不正确的,因为c.ct不是值而是类型(路径依赖类型)。因此,涉及c.ct的有效(但有些无意义)表达式可能是:

val a: c.ct = new Currency

希望有所帮助。