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 _)
    // ...   
  }
}

Folder内部パッケージの可視性をオブジェクトのみに制限できる Scala コンストラクトはありますか?

ありがとう

4

1 に答える 1

0

いくつかのオプション:

  1. objectFolder コンパニオン オブジェクト内でdb をプライベートとして宣言できます。
  2. db を として宣言しtrait、メンバーを保護して、それを Folder コンパニオン オブジェクトに混ぜることができます。
  3. フォルダーのすべてのものを 1 つのパッケージに入れ、隠しパッケージを非公開にすることができます (構文は になりますprivate[folder-package])。
于 2014-07-02T08:39:59.850 に答える