On 18/06/12 04:25, knu (Akinori MUSHA) wrote:
>
> Issue #6596 has been updated by knu (Akinori MUSHA).
>
>
> =begin
> You are changing the subject.  This issue is about Array#indexes, and if you talk about generalization, you should work out a concrete proposal with convincing examples to open another issue.
>
> For that matter, I don't think "indexes" could or should be generalized to Enumerable because Enumerable currently does not have the sense of index.
>
> Lastly, even if you sometimes need to collect indices you can simply use #select with ease:
>
>      indexes = (0...a.size).select { |i| a[i] % 2 == 1 }
>
>      #enumurator = (0...a.size).lazy.select { |i| a[i] % 2 == 1 }
>
> Considering that indices are only useful when you access the originating array with them, the array should have a name and there should be no problem if you can't do this in a method chain.
> =end


Index lists *can* be useful without the original array.  A couple of 
years ago I had the job of turning a big CSV into a database schema. 
The first step in this was to work out which columns in the CSV are 
correlated.  Here's a simplified example:

   $ cat example.csv
NAME,TYPE,LABEL
aleph,a,foo
aleph,b,foo
beth,a,bar

See how NAME and LABEL vary together?  I want them to end up in the same 
table, with two rows in it.  You can group columns into tables by 
generating an Array#indexes list for each unique entry in each column in 
order, then seeing if the columns match by checking *just the index 
lists* for for equality, ignoring the original column data.

-- 
Alex

>
> ----------------------------------------
> Bug #6596: New method for Arrays : Array#index
> https://bugs.ruby-lang.org/issues/6596#change-27286
>
> Author: robin850 (Robin Dupret)
> Status: Feedback
> Priority: Normal
> Assignee:
> Category: core
> Target version: 2.0.0
> ruby -v: 2.0.0
>
>
> Hello
>
> 5 days ago, I submitted a pull request on Github which provides a new method for the array objects which is Array#indexes. I have fist edit the Array#index method in order it to return an array of indexes and not a single index (which is the first occurrence it finds). I found it more logical but a user (trans) tells us that it could break the contract of Array#index so I decided to move it into Array#indexes. Eric (drbrain) tells me I should reasonning why I want to add this method ; it's just a point of view : I don't really understand why Array#index return a single index if the parameter is in the array several times.
>
> Examples
>
> a = [1, 2, 3, 1]
> a.indexes(1)
> Return : [0, 3]
> a.index(1)
> Return : 0
> In my opinion, it's not really logical, 1 is in the array twice
>
> Moreover, this pull request doesn't beak anything because we don't edit the Array#index method so programms which were created with previous version of Ruby will work.
>
> I hope my post is complete. Have a nice day.
>
>
>
>