From: se8.and@... Date: 2017-06-28T19:23:16+00:00 Subject: [ruby-core:81818] [Ruby trunk Feature#13692] Array#index? Issue #13692 has been updated by se8 (S��bastien Durand). This feature may not be that good, I agree. :) I thought it could occasionally be useful when querying arrays. For example, we have this method in Ruby Facets: https://github.com/rubyworks/facets/blob/master/lib/core/facets/array/from.rb ~~~ ruby def from(index) return [] if index >= size self[index..-1] end ~~~ Here the problem is that this method uses "index >= size" to check if the index exists. It's ok as long as we use positive indexes, but it doesn't work with negative indexes: ~~~ ruby [0, 1, 2].from(1) # => [1, 2] [0, 1, 2].from(10) # => [] [0, 1, 2].from(-10) # => nil - and I was expecting an empty array to chain other methods ~~~ Relying on index? solves that problem: ~~~ ruby def from(index) if index?(index) self[index..-1] else [] end end ~~~ ~~~ ruby [0, 1, 2].from(-10) # => [] ~~~ Also, it could be nice to have similar Hash and Array features: ~~~ ruby key?(key) # => true or false index?(index) # => true or false key(value) # => a key index(value) # => an index ~~~ But yes, Array is not a numerical Hash and is not designed to be used that way: ~~~ ruby array = [] array[42] = 'Hello World !' array.size # => 43 ~~~ So I don't know really. It's not a life changing method for sure! :) ---------------------------------------- Feature #13692: Array#index? https://bugs.ruby-lang.org/issues/13692#change-65514 * Author: se8 (S��bastien Durand) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Hello! We currently have these methods: ~~~ Hash#key(value) Hash#key?(key) Array#index(value) ~~~ I was thinking we could add this tiny method: ~~~ Array#index?(index) ~~~ as this is sometimes useful to check if an array index exists. ~~~ ruby class Array def index?(index) index.between?(0 - size, size - 1) end end ['a', 'b', 'c'].index?(0) # => true ['a', 'b', 'c'].index?(2) # => true ['a', 'b', 'c'].index?(3) # => false ['a', 'b', 'c'].index?(-1) # => true ['a', 'b', 'c'].index?(-3) # => true ['a', 'b', 'c'].index?(-4) # => false [false, nil].index?(0) #=> true [false, nil].index?(1) #=> true ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: