6

次のコードでは、2.10M3 用の Eclipse プラグイン 2.1.0 で 2.10.0M3 を使用しています。JVM 1.5 を対象とするデフォルト設定を使用しています

class GeomBase[T <: DTypes] {          
  abstract class NewObjs {
    def newHex(gridR: GridBase, coodI: Cood): gridR.HexRT          
  }

  class GridBase {
    selfGrid =>
      type HexRT = HexG with T#HexTr

    def uniformRect (init: NewObjs) {
      val hexCood = Cood(2 ,2)
      val hex: HexRT = init.newHex(selfGrid, hexCood)//  won't compile
    }
  }
}

エラーメッセージ:

Description Resource Path Location Type type mismatch;
  found: GeomBase.this.GridBase#HexG with T#HexTr
  required: GridBase.this.HexRT (which expands to) GridBase.this.HexG with T#HexTr GeomBase.scala   

メソッドが GridBase のこの特定のインスタンスであるはずなのに、なぜコンパイラはメソッドが型射影 GridBase#HexG を返すと考えるのですか?

編集は、コメントに応答してより単純なコード クラスに転送され、別のエラー メッセージが表示されるようになりました。

package rStrat
class TestClass {
  abstract class NewObjs {
    def newHex(gridR: GridBase): gridR.HexG
  }     
  class GridBase {
    selfGrid =>         

    def uniformRect (init: NewObjs) {
      val hex: HexG = init.newHex(this) //error here                        
    }       

    class HexG {
      val test12 = 5                 
    }
  }
}

.

Error line 11:Description   Resource    Path    Location    Type
type mismatch;  found   : gridR.HexG  required: GridBase.this.HexG
possible cause: missing arguments for method or constructor TestClass.scala /SStrat/src/rStrat  line 11 Scala Problem

更新 2.10.0M4 に切り替え、新しいバージョンの Eclipse でプラグインを M4 バージョンに更新し、JVM 1.6 (および 1.7) に切り替えましたが、問題は変わりません。

4

2 に答える 2

4

SI-5958として記録されます- 依存メソッド タイプでこれを置き換えます

于 2012-06-21T07:50:26.913 に答える
2

これは 2.10.0M7 で機能するようになりました。バグが修正されました。

val hex: HexRT = init.newHex(selfGrid, hexCood) //now compiles and runs correctly
于 2012-09-15T07:37:14.157 に答える