【发布时间】:2015-09-12 23:17:30
【问题描述】:
我创建了一个类:
class Standalone(val str:String)
{
Console println "Creating : "+this;
override def toString()= " str : "+str;
}
object StandaloneFactory
{
private val standalones= Map("red"-> new Standalone("Red"),"blue"-> new Standalone("Blue"),"green"-> new Standalone("green"));
def getColor(color : String) = if(standalones.contains(color)) standalones(color) else null;
}
我知道 Object StandaloneFactory 将有一个作为 StandaloneFactory 的实例。我只想创建一个 Standalonefactory 的 var/val,所以我尝试这样做:
object StandaloneMain
{
def main(args:Array[String])
{
var stdFac:StandaloneFactory= StandaloneFactory;
Console println stdFac;
Console.println(StandaloneFactory.getColor("red"));
}
}
但这不会编译并给出如下错误: 错误:未找到:输入 StandaloneFactory
现在我改变了
var stdFac:StandaloneFactory= StandaloneFactory;
到
var stdFac:StandaloneFactory.type= StandaloneFactory;
或
var stdFac= StandaloneFactory;
代码编译运行成功。 我认为这与 scala 中的别名有关。我不明白发生了什么。请帮助我理解这一点。
谢谢。
【问题讨论】: