0

我从 playframework 上的 Slick(和 Scala)开始。我的项目由 .scala 文件构成,其中包含域概念的所有类和对象。

package models

class Folder(val id: Option[Long], var name: String, val childrens:Set)

object Folder{
  val folders = new db.Folders

  def get(id: Long)(implicit s: Session): Option[Folder] = {
    Query(users).where(_.id === id).firstOption.map { r: db.Row =>
      new Folder(r.id, r.name, Set.empty]) // TODO load childrens for folder
    }
  }
}

//  Attempt to segregate and maybe restrict the persistence code
package db {

  case class Row(id: Option[Long], name: String)

  class Folders extends Table[Row]("folders") {

    def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
    def name = column[String]("name", O.NotNull)
    def * = id.? ~ name <> (map _, unmap _)
    // ...   
  }
}

是否有一些 Scala 构造可以将内部包的可见性限制为Folder仅对对象的可见性?

谢谢

4

1 回答 1

0

一些选项:

  1. 您可以将 db 声明为objectFolder 伴随对象中的私有对象,
  2. 您可以将 db 声明为 a trait,使成员受保护并将其混合到 Folder 伴随对象中
  3. 您可以将所有文件夹内容放在一个包中,并将您想要隐藏包的内容设为私有(语法为private[folder-package])。
于 2014-07-02T08:39:59.850 回答