1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
##
# Array
#
# ISO 15.2.12
class Array
##
# call-seq:
# array.each {|element| ... } -> self
# array.each -> Enumerator
#
# Calls the given block for each element of +self+
# and pass the respective element.
#
# ISO 15.2.12.5.10
def each(&block)
return to_enum :each unless block
idx = 0
while idx < length
block.call(self[idx])
idx += 1
end
self
end
##
# call-seq:
# array.each_index {|index| ... } -> self
# array.each_index -> Enumerator
#
# Calls the given block for each element of +self+
# and pass the index of the respective element.
#
# ISO 15.2.12.5.11
def each_index(&block)
return to_enum :each_index unless block
idx = 0
while idx < length
block.call(idx)
idx += 1
end
self
end
##
# call-seq:
# array.collect! {|element| ... } -> self
# array.collect! -> new_enumerator
#
# Calls the given block for each element of +self+
# and pass the respective element. Each element will
# be replaced by the resulting values.
#
# ISO 15.2.12.5.7
def collect!(&block)
return to_enum :collect! unless block
idx = 0
len = size
while idx < len
self[idx] = block.call(self[idx])
idx += 1
end
self
end
##
# call-seq:
# array.map! {|element| ... } -> self
# array.map! -> new_enumerator
#
# Alias for collect!
#
# ISO 15.2.12.5.20
alias map! collect!
##
# call-seq:
# array.sort -> new_array
# array.sort {|a, b| ... } -> new_array
#
# Returns a new Array whose elements are those from +self+, sorted.
def sort(&block)
self.dup.sort!(&block)
end
##
# call-seq:
# array.to_a -> self
#
# Returns self, no need to convert.
def to_a
self
end
alias entries to_a
##
# Array is enumerable
# ISO 15.2.12.3
include Enumerable
end
|