[ruby-core:96300] [Ruby master Feature#16428] Add Array#uniq?

[email protected]
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.journal-83205.20191218050242.5ebac33535498b9e@ruby-lang.org>
Issue #16428 has been updated by duerst (Martin Dürst).


I seem to member that many years ago, I made the same proposal, and Nobu created a patch, but unfortunately, I didn't find any traces anymore on this tracker or in my mail.

Anyway, I support this proposal. It's definitely an useful functionality, and it's clearly faster than doing it indirectly via #uniq.

----------------------------------------
Feature #16428: Add Array#uniq?
https://bugs.ruby-lang.org/issues/16428#change-83205

* Author: kyanagi (Kouhei Yanagita)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
I propose Array#uniq?.

I often need to check if an array have duplicate elements.

This method returns true if no duplicates are found in self, otherwise returns false.
If a block is given, it will use the return value of the block for comparison.

This is equivalent to `array.uniq.size == array.size`, but faster.

```
% ~/tmp/r/bin/ruby -rbenchmark/ips -e 'a = Array.new(100) { rand(1000) }; Benchmark.ips { |x| x.report("uniq") { a.uniq.size == a.size }; x.report("uniq?") { a.uniq? } }'
Warming up --------------------------------------
                uniq    25.765k i/100ms
               uniq?    76.544k i/100ms
Calculating -------------------------------------
                uniq    278.144k (± 4.1%) i/s -      1.391M in   5.010858s
               uniq?    981.868k (± 5.1%) i/s -      4.975M in   5.081611s
```

I think the name `uniq?` is natural because Array already has `uniq`.

patch: https://github.com/ruby/ruby/pull/2762



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.