使用Scala Ammonite脚本中的包创建一个类
我在ammonite shell中编写了以下scala脚本使用Scala Ammonite脚本中的包创建一个类,scala,ammonite,Scala,Ammonite,我在ammonite shell中编写了以下scala脚本 #!/usr/bin/env amm @main def main() = { val p = Person("foo") } case class Person(name: String) 这可以编译并运行良好。但是我需要班级人员在一个名为com.foo 如果我尝试 #!/usr/bin/env amm @main def main() = { val p = Person("foo") } package co
#!/usr/bin/env amm
@main
def main() = {
val p = Person("foo")
}
case class Person(name: String)
这可以编译并运行良好。但是我需要班级人员在一个名为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类指定名称空间。因为它是一个脚本,所以我希望将所有内容都保存在同一个文件中。因为脚本内容由Ammonite包装在一个对象中(要有顶级语句和定义),所以不能使用
包。但您可以通过在嵌套对象中定义类来命名类的名称空间:
object com {
object foo {
case class Person(name: String)
}
}
@main
def main() = {
val p = com.foo.Person("foo")
}
如果稍后将在另一个脚本中导入此脚本,则还将使用此命名空间(不带包装):
由于脚本内容由Ammonite包装在对象中(以具有顶级语句和定义),因此不能使用package
。但您可以通过在嵌套对象中定义类来命名类的名称空间:
object com {
object foo {
case class Person(name: String)
}
}
@main
def main() = {
val p = com.foo.Person("foo")
}
如果稍后将在另一个脚本中导入此脚本,则还将使用此命名空间(不带包装):