> * Whether or not contains() needs a comparison callback in my mind depends 
> mainly on whether or not the operator overloading RFC passes.  If it does, 
> then contains() can/should use the __compareTo() method on objects.  If it 
> doesn't, then there needs to be some other way to compare non-identical 
> objects or else that method becomes mostly useless.

This is only partly true. Let's say we have a vector of some complex
type A. There are legitimate reasons for using different ways of
comparing As, such as when projecting sub-fields (for example, sorting
by each member's name this time, but next time sorting by each
member's location).

Of course, if it passes, then using a type's built-in comparison
overloading is a sensible default, but it doesn't remove the need of
having a custom comparator.

-----

I was tired when I originally pointed it out the comparator/equatable
stuff, but Tyson was rightly saying that `any` solves this need, e.g.

    <?php
    if ($vec->contains($value, $eq)) {/**/}
    // translates to
    if ($vec->any(fn ($x) => $eq($x, $value))) {/**/}
    ?>

However, it's not as clear what to do for `indexOf` where you care
about the index it was found at.

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to