Skip to content

Use structurally equal values as Map vs IdentityMap keys

Use structurally equal values as Map vs IdentityMap keys

Section titled “Use structurally equal values as Map vs IdentityMap keys”

Canonical source: protos/examples/collections/path-keys.protos at locked revision e99b712ecf658a527b1fe82c8beba2c1286d8dc9.

This executable example is rendered from the exact Protos source consumed by the website. Its program body is copied without modification.

/*
* THE LICENSED WORK IS PROVIDED UNDER THE TERMS OF THE ADAPTIVE PUBLIC LICENSE
* ("LICENSE") AS FIRST COMPLETED BY: Guillermo Adrián Molina. ANY USE, PUBLIC
* DISPLAY, PUBLIC PERFORMANCE, REPRODUCTION OR DISTRIBUTION OF, OR PREPARATION OF
* DERIVATIVE WORKS BASED ON, THE LICENSED WORK CONSTITUTES RECIPIENT'S ACCEPTANCE
* OF THIS LICENSE AND ITS TERMS, WHETHER OR NOT SUCH RECIPIENT READS THE TERMS OF
* THE LICENSE. "LICENSED WORK" AND "RECIPIENT" ARE DEFINED IN THE LICENSE. A COPY
* OF THE LICENSE IS LOCATED IN THE TEXT FILE ENTITLED "LICENSE.TXT" ACCOMPANYING
* THE CONTENTS OF THIS FILE.
*/
// Equal Path values are one Map key but remain two IdentityMap keys.
a: Path.relative().child("same")
b: Path.relative().child("same")
byValue: Map()
byValue[a] = 10
byValue[b] = 20
byIdentity: IdentityMap()
byIdentity[a] = 10
byIdentity[b] = 20
print(byValue.size())
print(byIdentity.size())

← Previous example · Task catalog · Next example →