使用 Scala Ammonite 脚本中的包创建 class
Create a class with a package in a Scala Ammonite Script
我用 ammonite 编写了以下 scala 脚本 shell
#!/usr/bin/env amm
@main
def main() = {
val p = Person("foo")
}
case class Person(name: String)
这可以编译并且工作正常。但是我需要 class 人在一个名为 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 {
我想知道如何为我的案例指定命名空间 class。由于它是一个脚本,我想将所有内容保存在同一个文件中。
由于脚本内容被 Ammonite 包装在一个对象中(具有 top-level 语句和定义),您不能使用 package
。但是您可以通过在嵌套对象中定义它来为您的 class 命名空间:
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"))
我用 ammonite 编写了以下 scala 脚本 shell
#!/usr/bin/env amm
@main
def main() = {
val p = Person("foo")
}
case class Person(name: String)
这可以编译并且工作正常。但是我需要 class 人在一个名为 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 {
我想知道如何为我的案例指定命名空间 class。由于它是一个脚本,我想将所有内容保存在同一个文件中。
由于脚本内容被 Ammonite 包装在一个对象中(具有 top-level 语句和定义),您不能使用 package
。但是您可以通过在嵌套对象中定义它来为您的 class 命名空间:
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"))