我在ammonite shell中编写了以下scala脚本
#!/usr/bin/env amm
@main
def main() = {
val p = Person("foo")
}
case class Person(name: String)
这编译并正常工作。但我需要将Person类放在名为com.foo
如果我尝试
#!/usr/bin/env amm
@main
def main() = {
val p = Person("foo")
}
package com.foo {
case class Person(name: String)
}
现在我收到类似
的语法错误Syntax Error: End:7:1 ..."package co"
package com.foo {
我想知道如何为我的case类指定命名空间。由于它是一个脚本,我想将所有内容保存在同一个文件中。
答案 0 :(得分:1)
由于脚本内容由Ammonite包装在对象中(具有顶级语句和定义),因此您无法使用package
。但您可以通过在嵌套对象中定义类来命名您的类:
object com {
object foo {
case class Person(name: String)
}
}
@main
def main() = {
val p = com.foo.Person("foo")
}
如果稍后将在另一个脚本中导入此脚本,您还将使用此命名空间(不包装):
import $file.firstScript, firstScript._
println(com.foo.Person("Bob"))