Hello, sorry for this probably easy question but i can’t find the solution.
I add some Principals in a Buffer and I would like to remove duplicates Principals… There is many way to do, but Buffer methods always need the equal : (X, X) parameter… And I don’t know what is that and I didn’t easily find examples.
let buff : Buffer.Buffer<Principal> = Buffer.Buffer(10);
let principal1 = "xxxx-xxxx-..."
let principal2 = "xxxx-xxxx-..."
if( Buffer.contains(buff, principal1, ???) == false) // check if the principal is in the buffer
buff.add(principal1); //add if it's not
How can I properly use these methods please ? Could you give an easy example like this one ?
The type signature for
(X, X) -> Bool which means it is a function that takes 2 arguments of type
X and returns a
In this case
Principal so you can use
If you never want duplicates you could consider using a
Set data structure instead. I could only find this implementation:
Thank you for this answer. This is was I tried to use : Principal.equal, as I used it to instanciate my Hashmaps, so, the problem is not from there…
Ok, I found immediately so, I had just forget to put var x = before my method :
var x = Buffer.contains(buff, q2.answers[i].principal, Principal.equal);
Thank you also for the explanation about Set, it seems to be what I was looking for !
I’m also unable to use this… I understand a little better these methods than before… But not perfectly yet.
I tried :
I get the error :
I don’t really understand why it expect Nat32 type instead of Hash type like it’s written in the prototype.
xh has the type
Hash. If we follow the imports we can see that that’s a type alias for
Hash.hash, which is a function that takes a
Nat and returns a
Instead, you probably want to provide the equivalent of
Principal.hash(q2.answers[i].principal) for that argument.