I do have 2 different tuples of type (Double, Double):
let tuple1: (Double, Double) = (1, 2)
let tuple2: (Double, Double) = (3, 4)
I want to compare their values using a simple if statement. Something like:
if (tuple1 == tuple2) {
// Do stuff
}
This throws the following error:
Could not find an overload for '==' that accepts the supplied arguments
My current solution is a function like this:
func compareTuples <T: Equatable> (tuple1: (T, T), tuple2: (T, T)) -> Bool {
return (tuple1.0 == tuple2.0) && (tuple1.1 == tuple2.1)
}
I already tried to write an extension but can't make it work for tuples. Do you have a more elegant solution to this problem?
Update
As Martin R states in the comments, tuples with up to six components can now be compared with ==
. Tuples with different component counts or different component types are considered to be different types so these cannot be compared, but the code for the simple case I described below is now obsolete.
Try this:
func == <T:Equatable> (tuple1:(T,T),tuple2:(T,T)) -> Bool
{
return (tuple1.0 == tuple2.0) && (tuple1.1 == tuple2.1)
}
It's exactly the same as yours, but I called it ==
. Then things like:
(1, 1) == (1, 1)
are true and
(1, 1) == (1, 2)
are false