0

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    

     ...
}

要約すると、スニペット全体はあまり意味がありません (コード内で頻繁に繰り返されるパターンです)。説明させてください。

  1. この構文は何ですか?

val interpolator: Interpolator { ... }

今まで書いてきましたがval name: Type = value、ここには同等のものはありません。

  1. Trees.this.typeタイプである必要がありますが、どのタイプですか?それは Trees trait で定義されるべきであり、this私が推測するコンテキストはコンテキストとは異なりtrait Treesます (問題 1 に関連)。ファイル補間も調べましたが、型要素がないようです。

  2. 最大の行はprotected val trees: Trees.this.type = Trees.thisです。

ここで何が起こっているのか誰か説明してもらえますか?

4

1 に答える 1