在我的软件包com.example.common中,我有一个package.scala文件:
package com.example.common
import scala.concurrent.Future
package object common extends MyPackage {
}
trait MyPackage extends MyFutures {
}
trait MyFutures {
type Funit = Future[Unit]
}
现在在这个文件里面,我以为我可以在范围内有上述内容:
com.example.common.email
class EmailService() {
def send(name: String): Funit = {
}
}
但我的别名类型Funit不在范围内,我收到错误:
no found: type Funit
答案 0 :(得分:1)
您的EmailService
不在包含您的包对象的包中。
您的包裹对象位于com.package.common.common
此外, 应根据包
命名您的包对象包对象包对象
p
extendst
将模板成员添加到包p
。每个包只能有一个包对象。标准命名约定是将上面的定义放在名为package.scala
的文件中,该文件位于与包p
对应的目录中。
所以你应该有以下
com/example/common/package.scala
common
com.example
import scala.concurrent.Future
package object common extends MyPackage {
}
trait MyPackage extends MyFutures {
}
trait MyFutures {
type Funit = Future[Unit]
}
// in the same file (you mentioned "Now inside of this file I thought I can have the above in scope:")
package common {
package email {
class EmailService() {
def send(name: String): Funit = ???
}
}
}
答案 1 :(得分:0)
这样,因为您已经在公共包中:
package com.example.common
import scala.concurrent.Future
object `package` extends MyPackage {
}
trait MyPackage extends MyFutures {
}
trait MyFutures {
type Funit = Future[Unit]
}
并使common._可见:
package com.example.common
package email
class EmailService() {
def send(name: String): Funit = ???
}