self =>最近、ケーキのパターンととの使用の違いについて学びましたself:T =>(こちらを参照)。ここで述べたように、これらの技術と実際の Scala コードとの違いは、引き続き私に問題を引き起こします。たとえば、Inox プロジェクトから抜粋した次のコード スニペットを参照してください。
trait Trees
extends Expressions
with Constructors
with Extractors
with Types
with Definitions
with Printers
with TreeOps { self =>
...
val interpolator: Interpolator { val trees: Trees.this.type } = new {
protected val trees: Trees.this.type = Trees.this
} with Interpolator
...
}
要約すると、スニペット全体はあまり意味がありません (コード内で頻繁に繰り返されるパターンです)。説明させてください。
- この構文は何ですか?
val interpolator: Interpolator { ... }
今まで書いてきましたがval name: Type = value、ここには同等のものはありません。
Trees.this.typeタイプである必要がありますが、どのタイプですか?それは Trees trait で定義されるべきであり、this私が推測するコンテキストはコンテキストとは異なりtrait Treesます (問題 1 に関連)。ファイル補間も調べましたが、型要素がないようです。最大の行は
protected val trees: Trees.this.type = Trees.thisです。
ここで何が起こっているのか誰か説明してもらえますか?