2011-12-23 11 views
1

私は(フィルタを使用してFORALL実装)本の72ページexcersizeごとに型パラメータ化機能を実装したいと思い文句パラメータ化(2.9.1)は、タイプAが未定義であることを訴える。同じ本の複数の例がこの構文を使用しているので、明らかにそうはならないはずです。この問題は、関数型パラメータを[A, B <: A]に変更することで解決できます。間違ったことをやっているのですか?Scalaの構文仕様に大きな変化がありますか?そうであれば、私は、奇しくも爆撃に疲れて、毎秒2倍の馬鹿げた質問で疲れています。誰かが、物事の現在の順序を明確に反映した本を勧めてもらえますか?Scalaは例によって型境界が機能コンパイラは

+3

これは変更ではありません。それはいつもそうだった。私はこの本を持っていませんが、本が間違っているか、 'class ThingsWithA [A] ...'のようなクラスにそのメソッドが現れ、型パラメータとして 'A'をすでに持っています。 –

答えて

6

あなたはすでに答えを与えた:エルス

def forall[A, B <: A](...)(...) = ... 

あなたは:あなたがしたい場合は、別の型パラメータで型パラメータBをバインドするには、型パラメータのリストにこれを追加する必要があります定義されていないものを参照しています。普通の(メソッド)パラメーターのような型パラメーターを考えるなら、おそらく役に立ちます。どのようにすべき以下のコンパイルのようなもの:ここで

def add(x: Int) = x + y 

パラメータYはちょうどあなたのケースが未定義だったようで、未定義です。

関連する問題