ルール。マップ差分
MapDiff タイプ。
MapDiff タイプは、2 つのrules.Mapオブジェクトを比較した結果を表します。
差分の作成に使用する MapDiff リテラルはありません。 MapDiff オブジェクトは、 rules.Map#diff関数の呼び出しによって返されます。
以下で説明する MapDiff 関数は、 rules.Map#diffと連鎖することによって呼び出されます。すべての MapDiff 関数は、Map オブジェクト間で比較されるキーをリストするrules.Setオブジェクトを返します。
// Compare two Map objects and return whether the key "a" has been // affected; that is, key "a" was added or removed, or its value was updated. request.resource.data.diff(resource.data).affectedKeys().hasOnly(["a"]);
メソッド
追加されたキー
addedKeys() はrules.Setを返します。
rules.Setを返します。これは、 diff()
を呼び出す Map に含まれているが、 diff()
に渡された Map には含まれていないキーをリストします。
例
{"a":1}.diff({}).addedKeys() == ["a"].toSet()
影響を受けるキー
affectedKeys() はrules.Setを返します。
rules.Setを返します。これは、 diff()
に渡された Map と比較して、 diff()
を呼び出す Map に追加、削除、または変更されたキーをリストします。この関数は、 MapDiff.addedKeys()
、 MapDiff.removedKeys()
、およびMapDiff.changedKeys()
を組み合わせた結果と同等のセットを返します。
({"a":0, "c":0, "u":0}).diff({"r":0, "c":1, "u": 0}).affectedKeys() == ["a", "r", "c"].toSet()
変更されたキー
ChangeKeys() はrules.Setを返します。
rules.Setを返します。これは、 diff()
を呼び出す Map とdiff()
に渡される Map の両方に表示されるが、値が等しくないキーをリストします。
例
{"a":0}.diff({"a":1, "b":4}).changedKeys() == ["a"].toSet()
削除されたキー
RemoveKeys() はrules.Setを返します。
rules.Setを返します。これは、 diff()
に渡された Map と比較して、 diff()
を呼び出す Map に含まれていないキーをリストします。
例
{}.diff({"a":1}).removedKeys() == ["a"].toSet()
変更されていないキー
ChangedKeys() はrules.Setを返します。
rules.Setを返します。これは、 diff()
を呼び出す Map とdiff()
に渡される Map の両方に現れ、値が等しいキーをリストします。
例
{"a": 0}.diff({"a":0}).unchangedKeys() == ["a"].toSet()