私はタイプSet=Int=>Boolean;を持っています。、および関数サブセット/ 2つのセットAとBを取得し、それらを比較する方法は?
私は次のように書いた
def union(a: Set, b: Set): Set = {
(i: Int) => a(i).&(b(i))==b(i)
}
コンパイルは成功しますが<function1>
、コードを実行すると出力に表示されます。
私はタイプSet=Int=>Boolean;を持っています。、および関数サブセット/ 2つのセットAとBを取得し、それらを比較する方法は?
私は次のように書いた
def union(a: Set, b: Set): Set = {
(i: Int) => a(i).&(b(i))==b(i)
}
コンパイルは成功しますが<function1>
、コードを実行すると出力に表示されます。
おそらく、Odersky 教授の Coursera コース「Scala での関数型プログラミングの原則」の演習を行っているようです。そうでない場合は、 などの組み込みの名前を再定義しないでくださいSet
。
true
いずれにせよ、あなたの質問に答えるために、「整数のセット」をそれに供給された がセットのメンバーである場合に返す関数として表すことを選択したInt
ので、あなたのセットは関数です( をInt
返す1つの引数のBoolean
)。
Scala は、関数を JVM バイトコードにコンパイルするときにソース コードを記録しないため、String
意味のある方法でその関数を表す を生成できず、代わり<functionN>
にNが関数のアリティ (引数の数) を生成するだけです。
あなたSet
はクラスではないと推測できますが、それは型エイリアスですInt=>Boolean.
=>
は のシンタックス シュガーであるため、FunctionN
はSet
の型エイリアスです。Function1[Int,Boolean]