5

私の関数の目的は、整数が 0 より大きく 7 以下である限り、その整数に 5 を加算することです。

val add5Partial : PartialFunction[Int, Int] = {
  case d if (0 < d <= 7) => d + 5;
} 

私は得る:

<console>:8: error: type mismatch;
 found   : Int(7)
 required: Boolean
         case d if (0 < d <= 7) => d + 5;

任意のヒント?

4

3 に答える 3

19

Scalaはそのままではそのような構文をサポートしていないので、次のように書く必要があります。

val partial : Int => Int = {
  case d if (d > 0) && (d <= 7) => d + 5;
} 

または、次のことを行うこともできます。

val partial : Int => Int = {
  case d if 1 to 7 contains d => d + 5;
} 
于 2013-01-13T20:33:34.160 に答える
5

1回の比較でこれを行うことはできません。使用する必要があります:

(d > 0) && (d <= 7)

これを実行すると、ブール値との1つの比較が評価され、2番目の比較でこれをintとして使用できなくなります。

于 2013-01-13T20:33:23.177 に答える