以下のscala宣言の意味:
type MyType = Int => Boolean
これが私の理解です:
新しい型「MyType」を宣言していますが、高階関数「Int=>Boolean」の意味は何ですか
以下のscala宣言の意味:
type MyType = Int => Boolean
これが私の理解です:
新しい型「MyType」を宣言していますが、高階関数「Int=>Boolean」の意味は何ですか
新しいタイプのエイリアスを宣言するほど、新しいタイプを宣言することはありません。それらはまだ同じタイプです:しかし、エイリアスはあなたがそれをもう少し簡潔に書くことを可能にします。
Int => Boolean
1つの引数Intを取り、ブール値を返す関数の型です。
たとえば、「5より大きい」のような関数のタイプは次のようになりInt => Boolean
ます。
type MyType = Int => Boolean
val greaterThan5: MyType = (x: Int) => x > 5
greaterThan5(7) // true
正解です。次のようにコンパイルされます。
type MyType = Int => Boolean
def positive(x: Int) = x > 0
val fun: MyType = positive
fun(42) //yields true
ここで、型エイリアスを宣言して、関数を取得して返す関数とMyType
同等であることを示します。次に、そのような宣言に一致するメソッドを作成します。最後に、このメソッドを型の変数に割り当てます。コンパイルして問題なく動作します。Int
Boolean
MyType
これは単なるエイリアスであり、新しいタイプではないことに注意してください。
trait MyType2 extends (Int => Boolean)
val fun2: MyType2 = positive _
error: type mismatch;
found : Int => Boolean
required: MyType2
val fun2: MyType2 = positive _
^