クラス値パラメーターの型メンバーの型の不一致

ps_ttf

クラス値パラメーターにバインドされた型メンバーを使用すると、「型の不一致」エラーが発生するのはなぜですか?例えば:

scala> class A { type t }
defined class A

scala> class B(val a: A)
defined class B

scala> val aInt = new A { type t = Int }
aInt: A{type t = Int} = $anon$1@6ccc7368

scala> val b = new B(aInt)
b: B = B@834518

scala> val i: b.a.t = 1
<console>:11: error: type mismatch;
 found   : Int(1)
 required: b.a.t
       val i: b.a.t = 1
                      ^

奇妙なことに、クラスパラメータとして定義されていない値を使用すると、すべてが正常に機能します。

scala> abstract class C { val a: A }
defined class C

scala> val c = new C { val a = aInt }
c: C{val a: A{type t = Int}} = $anon$1@1e815aad

scala> val i: c.a.t = 1
i: c.a.t = 1

そのような行動の理由は何ですか?

ps_ttf

何が起こっているのか理解できたようです。クラスBある例では、値aは型Aに明確な値を持たない型に変換されtます。抽象クラスの例でCは、インスタンスは、の具体的な型を持つwithcの値をオーバーライドします言い換えれば、はのインスタンスではありません:それはその匿名サブクラスのインスタンスです。aaInttcC

私はのタイプを知らせる例を変更した場合cのようにC、明示的に、私は最初のケースと同じエラーを取得します:

scala> class A { type t }
defined class A

scala> val aInt = new A { type t = Int }
aInt: A{type t = Int} = $anon$1@3b8590c5

scala> abstract class C { val a: A }
defined class C

scala> val c: C = new C { val a = aInt }
c: C = $anon$1@5f14a3c6

scala> val i: c.a.t = 1
<console>:11: error: type mismatch;
 found   : Int(1)
 required: c.a.t
       val i: c.a.t = 1
                      ^

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

型パラメーターと型の不一致

分類Dev

Javaでのパラメータ化された型の不一致

分類Dev

デフォルトのパラメータ型での Scala 型の不一致

分類Dev

Javaジェネリックス:境界の不一致:型は、型の境界付きパラメーターの有効な代替ではありません

分類Dev

Javaジェネリックス:境界の不一致:型は、型の境界付きパラメーターの有効な代替ではありません

分類Dev

テンプレートからコントローラーにクエリパラメーターを渡すときの型の不一致

分類Dev

Qtsqlのパラメーター数の不一致

分類Dev

Invokeでのパラメーター数の不一致

分類Dev

データ型の不一致と競合するコンパイラ

分類Dev

SSRS日付パラメーターの不一致

分類Dev

起動時のパラメータ数の不一致

分類Dev

implが `default`とマークされている場合にのみ、関連付けられた型と型パラメーターの不一致

分類Dev

VBAデータ型の不一致エラー13

分類Dev

Javascript apply()パラメータの不一致

分類Dev

Moq-パラメータの不一致

分類Dev

反射パラメータの不一致

分類Dev

オプションのパラメータタイプの不一致

分類Dev

Scala バイト配列型の不一致エラー

分類Dev

テンプレートパラメータの引数1でのC ++タイプ/値の不一致

分類Dev

データ型の不一致

分類Dev

SQLクエリでのMSAccessVBAデータ型の不一致エラー

分類Dev

C#動的キャストは、異なるパラメーターの型の不一致エラーを上回っています

分類Dev

Kotlinのジェネリック:ジェネリックマップパラメーターの型の不一致

分類Dev

npmインストールエラー-メタデータバージョンの不一致

分類Dev

ジェネリッククラスの入力パラメータタイプの不一致

分類Dev

エラー: 'template <class _Tp、class _Dp> class std :: unique_ptr'のテンプレートパラメータリストの引数1での型/値の不一致

分類Dev

CallWindowProcメソッドパラメーターの不一致

分類Dev

実行時エラー「13」タイプの不一致IF値= Thenステートメントループ

分類Dev

Kotlinのナビゲーションフラグメントでsearchview.setonquerytextlistener()型の不一致

Related 関連記事

  1. 1

    型パラメーターと型の不一致

  2. 2

    Javaでのパラメータ化された型の不一致

  3. 3

    デフォルトのパラメータ型での Scala 型の不一致

  4. 4

    Javaジェネリックス:境界の不一致:型は、型の境界付きパラメーターの有効な代替ではありません

  5. 5

    Javaジェネリックス:境界の不一致:型は、型の境界付きパラメーターの有効な代替ではありません

  6. 6

    テンプレートからコントローラーにクエリパラメーターを渡すときの型の不一致

  7. 7

    Qtsqlのパラメーター数の不一致

  8. 8

    Invokeでのパラメーター数の不一致

  9. 9

    データ型の不一致と競合するコンパイラ

  10. 10

    SSRS日付パラメーターの不一致

  11. 11

    起動時のパラメータ数の不一致

  12. 12

    implが `default`とマークされている場合にのみ、関連付けられた型と型パラメーターの不一致

  13. 13

    VBAデータ型の不一致エラー13

  14. 14

    Javascript apply()パラメータの不一致

  15. 15

    Moq-パラメータの不一致

  16. 16

    反射パラメータの不一致

  17. 17

    オプションのパラメータタイプの不一致

  18. 18

    Scala バイト配列型の不一致エラー

  19. 19

    テンプレートパラメータの引数1でのC ++タイプ/値の不一致

  20. 20

    データ型の不一致

  21. 21

    SQLクエリでのMSAccessVBAデータ型の不一致エラー

  22. 22

    C#動的キャストは、異なるパラメーターの型の不一致エラーを上回っています

  23. 23

    Kotlinのジェネリック:ジェネリックマップパラメーターの型の不一致

  24. 24

    npmインストールエラー-メタデータバージョンの不一致

  25. 25

    ジェネリッククラスの入力パラメータタイプの不一致

  26. 26

    エラー: 'template <class _Tp、class _Dp> class std :: unique_ptr'のテンプレートパラメータリストの引数1での型/値の不一致

  27. 27

    CallWindowProcメソッドパラメーターの不一致

  28. 28

    実行時エラー「13」タイプの不一致IF値= Thenステートメントループ

  29. 29

    Kotlinのナビゲーションフラグメントでsearchview.setonquerytextlistener()型の不一致

ホットタグ

アーカイブ