0

私はこの機能を持っています:

type CustomSet = Int => Boolean

交差点を作りたい場合は、次のようにします。

def intersection(s: CustomSet, t: CustomSet): CustomSet = {
        (x: Int) => contains(s, x) && contains(t, x)
  }

今、2つのセットの交差が空かどうかを確認する方法がわかりません...

私は多くの方法を試しました:

- if (intersection(s, t) == CustomSet())

- if (intersection(s, t) == None)

などですが、うまくいきません...

このチェックのどこが間違っているか教えてください。

4

1 に答える 1

2

すべてのコメントをまとめるだけです:

の結果intersectionは単なる関数です。2 つの関数の参照の等価性 (つまり、それらが同じ関数であるかどうか) を比較できます。

2 つの関数がすべての可能なパラメーター (およびシステム状態) に対して同じ結果を返す (そして同じ副作用がある) かどうかをテストする方法がないため、できることは、関心のある入力パラメーターの範囲を定義して結果を比較することだけです。すべての興味深い入力パラメーターのすべての結果を含む 2 つの関数の。

したがって、あなたの場合、次のようなことができます

(-1000 to 1000).forall(!intersection(s,t)(_))

-1000 から 1000 までのすべての数値がsとの交点にないかどうかをテストしますt

于 2012-10-02T04:46:48.593 に答える