为了避免在我的代码中的几个地方写出一个大类型,我想我会在包对象中使用类型声明来快捷它:
package pet
package object pet {
type Ops = ((Int,Int) => Int,String)
}
object Q extends App {
val ops = List[Ops](
((_+_),"+"),
((_-_),"-"),
((_*_),"*")
)
}
但它说val ops
,找不到Ops
。我猜我是在误解某些东西,但在查看了几个包对象的例子后,我不知道是什么。包对象本身没有错误,所以我不认为这是一个问题。
答案 0 :(得分:2)
声明package object
时,您需要将其放在"上面的#34;中。目前,您已在 package object pet
内声明package pet
,因此Ops
实际上位于路径pet.pet.Ops
。
在您的情况下,您应该将package object
放在其自己的文件中,而不需要package
声明。
如果您import pet.pet._
Q
内{{1}},它也会有用。
答案 1 :(得分:0)
每个包都允许有一个包对象。任何定义 放在包对象中的被认为是包的成员 本身。
从here可以看出,定义是特定于包的(在本例中为pet.pet
)。所以你需要import
使用它们。
您可以尝试:
object Q extends App {
import pet.pet._
...