1

これら2つの方法の主な違いを知りたいだけです。Groovy API が predicate と言うとき、それはどういう意味ですか?

4

2 に答える 2

6

簡単な説明:

  • 述語は、ブール値を返す関数/式です

  • map.every は、述語がすべての要素に対して true と評価された場合にのみ true を返します。

  • map.any は、少なくとも 1 つの要素について述語が true と評価された場合に true を返します。

例 (疑似コード):

a = [1,2,3,4,5]
a.every { |x| x < 3 } => false, since 3,4 and 5 are not smaller than 3
a.any   { |x| x < 3 } => true, since 1 and 2 are smaller than 3
于 2012-06-12T10:48:11.943 に答える
5

ドキュメントを読んだら;

Map.any 言う

マップのエントリを繰り返し処理し、述語が少なくとも 1 つのエントリに対して有効かどうかを確認します

一方、Map.everyは言う

マップのエントリを繰り返し処理し、述語がすべてのエントリに対して有効かどうかを確認します。

述語とは、クロージャーを介してエントリを実行し、Groovy Truthiness の結果をチェックすることを意味します

例 (Frank の疑似コードを Map を使用して実際の groovy コードに拡張):

a = [a:1,b:2,c:3,d:4]
assert a.every { key, value -> value < 3 } == false // since 3 and 4 are not smaller than 3
assert a.any   { key, value -> value < 3 } == true  // since 1 and 2 are smaller than 3
于 2012-06-12T10:48:33.037 に答える