所以基本上我正在开始scala,我正在尝试构建一个简单的RPG脚本来习惯这种语言。我遇到的第一个问题是如何声明一个类Character和一个类Ennemy,知道每个都有使用另一个类的实例作为参数的方法。我没有在其他语言中遇到过这个问题(或者他们有一种说法:嘿我正在使用其他类,但除非你被调用,否则不会实例化任何东西),在Scala这里我有以下错误:not发现:输入Ennemy。
我想在某个地方有一个关键词,但我找不到它。
由于
编辑:对不起我没有合并代码,基本上我把它剥离到了这个:
class Character {
var name = ""
def slain(e:Ennemy) = println(this.name + " has slain ennemy " + e.name)
}
class Ennemy {
var name = ""
def slain(c:Character) = println(this.name + " has slain character " + c.name)
}
代码仍然无法编译并返回上述错误。
答案 0 :(得分:2)
如果你在scala repl中,你需要同时定义它们以避免这种情况。这是因为每个表达式一次运行一个,如果你不能引用尚未定义的东西。
请注意,对于.scala源文件中定义的类,这不是问题。
您可以使用:paste
一次定义多个内容。
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Character {
var name = ""
def slain(e:Ennemy) = println(this.name + " has slain ennemy " + e.name)
}
class Ennemy {
var name = ""
def slain(c:Character) = println(this.name + " has slain character " + c.name)
}
// Exiting paste mode, now interpreting.
defined class Character
defined class Ennemy
其他说明:
Enemy
trait Entity {
var name = ""
def slain(e: Entity) = println(this.name + " has slain enemy " + e.name)
}
class Character extends Entity
class Enemy extends Entity
这确实意味着角色和敌人可以杀死他们自己的类型。您可以通过不同方式对其进行定义以避免这种情况,但我会省略它们,因为我认为它比您现在需要的更复杂。