6

Scalatra のドキュメントを調べていると、まだ見たことのない構文のコードの興味深いスニペットに気付きました: http://www.scalatra.org/2.2/guides/persistence/introduction.html

具体的には、次のビットです。

trait DatabaseSessionSupport { this: ScalatraBase =>
  import DatabaseSessionSupport._

this: ScalatraBase =>セグメントを除いて、ここにあるものはすべて意味があります。ここにはどのような意味がありますか?以下のインポートに固有のものですか、それともトレイト全体に固有のものですか?

4

1 に答える 1

5

これは「自己型注釈」と呼ばtrait DatabaseSessionSupportれ、インスタンス化可能なクラスでの の使用には、 と一致する型が付随する (「混合される」) 必要がありますScalatraBase。この特定のコードは見ていませんが、いわゆる「ケーキ パターン」を使用している可能性が高いです。

この概念の多くの処理は、スタック オーバーフロー、さまざまなブログ、および Odersky らによる古典的な論文の両方で見つけることができます。アル。「スケーラブルなコンポーネントの抽象化」と題されています。

于 2013-06-14T00:53:02.463 に答える