7

私はいくつかのライブラリで見ました。たとえば、Sprayは、次のようなデュアルパッケージ仕様です。

package cc.spray
package http

// code

これはパッケージcc.spray.httpの単なる目玉ですか、それともこのように2つを分解することには機能的な利点がありますか?

4

4 に答える 4

8

これはこれと同等です:

package cc.spray.http
import cc.spray._
// implicitly, import cc.spray.http._

つまり、パッケージcc.sprayとパッケージのすべてのメンバーcc.spray.httpが表示されます。一方、パッケージのメンバーは表示ccされません。

このようにして、問題を発生させることなく、パッケージ階層などの名前を安全に使用できるjavaと同時に、表示したいパッケージスコープを簡単に表示できます。

于 2012-06-15T21:47:42.403 に答える
3

個別のパッケージステートメントは、との両方cc.spraycc.spray.httpスコープに入れます。

于 2012-06-15T21:24:08.510 に答える
1

このアプローチから得られた1つの素晴らしい勝利を忘れないでください

// Foo.scala
package cc.spray
package http

class Foo {
  ...
}

// Bar.Scala
package cc.spray
package bar

import http._ // concise imports relative to cc.spray

class Bar {
  ...
}
于 2012-06-17T08:20:30.713 に答える
0

他の多くのものと同様に、これはScala 2.8で導入されました。他の回答は「何」(現在のコンテキストに複数のパッケージスコープを公開する)を提供し、公式のScalaドキュメントには詳細な理論的根拠とともにより多くの詳細があります機能。

于 2012-06-16T13:24:48.683 に答える