⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.25
Server IP:
109.199.105.153
Server:
Linux connect.inboxifs.com 5.15.0-152-generic #162-Ubuntu SMP Wed Jul 23 09:48:42 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.2.29
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
share
/
ri
/
3.0.0
/
system
/
Array
/
View File Name :
cdesc-Array.ri
U:RDoc::NormalClass[iI" Array:ET@I"Object;To:RDoc::Markup::Document:@parts[o;;[�o:RDoc::Markup::Paragraph;[I"EAn \Array is an ordered, integer-indexed collection of objects, ;TI"=called _elements_. Any object may be an \Array element.;To:RDoc::Markup::BlankLine S:RDoc::Markup::Heading: leveli: textI"\Array Indexes;T@o; ;[I"2\Array indexing starts at 0, as in C or Java.;T@o; ;[I":A positive index is an offset from the first element:;To:RDoc::Markup::List: @type:BULLET:@items[o:RDoc::Markup::ListItem:@label0;[o; ;[I")Index 0 indicates the first element.;To;;0;[o; ;[I"*Index 1 indicates the second element.;To;;0;[o; ;[I"...;T@o; ;[I"IA negative index is an offset, backwards, from the end of the array:;To;;;;[o;;0;[o; ;[I")Index -1 indicates the last element.;To;;0;[o; ;[I"1Index -2 indicates the next-to-last element.;To;;0;[o; ;[I"...;T@o; ;[I"CA non-negative index is <i>in range</i> if it is smaller than ;TI"3the size of the array. For a 3-element array:;To;;;;[o;;0;[o; ;[I"&Indexes 0 through 2 are in range.;To;;0;[o; ;[I"Index 3 is out of range.;T@o; ;[I"BA negative index is <i>in range</i> if its absolute value is ;TI"Cnot larger than the size of the array. For a 3-element array:;To;;;;[o;;0;[o; ;[I"(Indexes -1 through -3 are in range.;To;;0;[o; ;[I"Index -4 is out of range.;T@S;;i; I"Creating Arrays;T@o; ;[I"AA new array can be created by using the literal constructor ;TI"K<code>[]</code>. Arrays can contain different types of objects. For ;TI"Hexample, the array below contains an Integer, a String and a Float:;T@o:RDoc::Markup::Verbatim;[I"/ary = [1, "two", 3.0] #=> [1, "two", 3.0] ;T:@format0o; ;[I"QAn array can also be created by explicitly calling Array.new with zero, one ;TI"N(the initial size of the Array) or two arguments (the initial size and a ;TI"default object).;T@o;;[I"ary = Array.new #=> [] ;TI",Array.new(3) #=> [nil, nil, nil] ;TI"/Array.new(3, true) #=> [true, true, true] ;T;0o; ;[ I"NNote that the second argument populates the array with references to the ;TI"Osame object. Therefore, it is only recommended in cases when you need to ;TI"Iinstantiate arrays with natively immutable objects such as Symbols, ;TI"numbers, true or false.;T@o; ;[I"MTo create an array with separate objects a block can be passed instead. ;TI"PThis method is safe to use with mutable objects such as hashes, strings or ;TI"other arrays:;T@o;;[I"5Array.new(4) {Hash.new} #=> [{}, {}, {}, {}] ;TI"9Array.new(4) {|i| i.to_s } #=> ["0", "1", "2", "3"] ;T;0o; ;[I"CThis is also a quick way to build up multi-dimensional arrays:;T@o;;[I"/empty_table = Array.new(3) {Array.new(3)} ;TI"=#=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]] ;T;0o; ;[I"KAn array can also be created by using the Array() method, provided by ;TI"EKernel, which tries to call #to_ary, then #to_a on its argument.;T@o;;[I">Array({:a => "a", :b => "b"}) #=> [[:a, "a"], [:b, "b"]] ;T;0S;;i; I"Example Usage;T@o; ;[I"OIn addition to the methods it mixes in through the Enumerable module, the ;TI"PArray class has proprietary methods for accessing, searching and otherwise ;TI"manipulating arrays.;T@o; ;[I"8Some of the more common ones are illustrated below.;T@S;;i; I"Accessing Elements;T@o; ;[ I"NElements in an array can be retrieved using the Array#[] method. It can ;TI"Ktake a single integer argument (a numeric index), a pair of arguments ;TI"R(start and length) or a range. Negative indices start counting from the end, ;TI"$with -1 being the last element.;T@o;;[I"arr = [1, 2, 3, 4, 5, 6] ;TI"arr[2] #=> 3 ;TI"arr[100] #=> nil ;TI"arr[-3] #=> 4 ;TI"arr[2, 3] #=> [3, 4, 5] ;TI" arr[1..4] #=> [2, 3, 4, 5] ;TI"arr[1..-3] #=> [2, 3, 4] ;T;0o; ;[I"PAnother way to access a particular array element is by using the #at method;T@o;;[I"arr.at(0) #=> 1 ;T;0o; ;[I"@The #slice method works in an identical manner to Array#[].;T@o; ;[I"JTo raise an error for indices outside of the array bounds or else to ;TI"Cprovide a default value when that happens, you can use #fetch.;T@o;;[I"*arr = ['a', 'b', 'c', 'd', 'e', 'f'] ;TI"Narr.fetch(100) #=> IndexError: index 100 outside of array bounds: -6...6 ;TI"'arr.fetch(100, "oops") #=> "oops" ;T;0o; ;[I"IThe special methods #first and #last will return the first and last ;TI"(elements of an array, respectively.;T@o;;[I"arr.first #=> 1 ;TI"arr.last #=> 6 ;T;0o; ;[I"<To return the first +n+ elements of an array, use #take;T@o;;[I"arr.take(3) #=> [1, 2, 3] ;T;0o; ;[I"K#drop does the opposite of #take, by returning the elements after +n+ ;TI" elements have been dropped:;T@o;;[I"arr.drop(3) #=> [4, 5, 6] ;T;0S;;i; I")Obtaining Information about an Array;T@o; ;[I"LArrays keep track of their own length at all times. To query an array ;TI"Labout the number of elements it contains, use #length, #count or #size.;T@o;;[I"?browsers = ['Chrome', 'Firefox', 'Safari', 'Opera', 'IE'] ;TI"browsers.length #=> 5 ;TI"browsers.count #=> 5 ;T;0o; ;[I";To check whether an array contains any elements at all;T@o;;[I"browsers.empty? #=> false ;T;0o; ;[I"@To check whether a particular item is included in the array;T@o;;[I".browsers.include?('Konqueror') #=> false ;T;0S;;i; I"Adding Items to Arrays;T@o; ;[I"KItems can be added to the end of an array by using either #push or #<<;T@o;;[I"arr = [1, 2, 3, 4] ;TI"%arr.push(5) #=> [1, 2, 3, 4, 5] ;TI"(arr << 6 #=> [1, 2, 3, 4, 5, 6] ;T;0o; ;[I"?#unshift will add a new item to the beginning of an array.;T@o;;[I".arr.unshift(0) #=> [0, 1, 2, 3, 4, 5, 6] ;T;0o; ;[I"HWith #insert you can add a new element to an array at any position.;T@o;;[I"@arr.insert(3, 'apple') #=> [0, 1, 2, 'apple', 3, 4, 5, 6] ;T;0o; ;[I"KUsing the #insert method, you can also insert multiple values at once:;T@o;;[I"3arr.insert(3, 'orange', 'pear', 'grapefruit') ;TI"H#=> [0, 1, 2, "orange", "pear", "grapefruit", "apple", 3, 4, 5, 6] ;T;0S;;i; I"!Removing Items from an Array;T@o; ;[I"IThe method #pop removes the last element in an array and returns it:;T@o;;[I"arr = [1, 2, 3, 4, 5, 6] ;TI"arr.pop #=> 6 ;TI"arr #=> [1, 2, 3, 4, 5] ;T;0o; ;[I"HTo retrieve and at the same time remove the first item, use #shift:;T@o;;[I"arr.shift #=> 1 ;TI"arr #=> [2, 3, 4, 5] ;T;0o; ;[I"0To delete an element at a particular index:;T@o;;[I"arr.delete_at(2) #=> 4 ;TI"arr #=> [2, 3, 5] ;T;0o; ;[I"FTo delete a particular element anywhere in an array, use #delete:;T@o;;[I"arr = [1, 2, 2, 3] ;TI"arr.delete(2) #=> 2 ;TI"arr #=> [1,3] ;T;0o; ;[I"IA useful method if you need to remove +nil+ values from an array is ;TI"#compact:;T@o;;[ I"1arr = ['foo', 0, nil, 'bar', 7, 'baz', nil] ;TI"2arr.compact #=> ['foo', 0, 'bar', 7, 'baz'] ;TI"<arr #=> ['foo', 0, nil, 'bar', 7, 'baz', nil] ;TI"2arr.compact! #=> ['foo', 0, 'bar', 7, 'baz'] ;TI"2arr #=> ['foo', 0, 'bar', 7, 'baz'] ;T;0o; ;[I"GAnother common need is to remove duplicate elements from an array.;T@o; ;[I"DIt has the non-destructive #uniq, and destructive method #uniq!;T@o;;[I"3arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556] ;TI"/arr.uniq #=> [2, 5, 6, 556, 8, 9, 0, 123] ;T;0S;;i; I"Iterating over Arrays;T@o; ;[ I"LLike all classes that include the Enumerable module, Array has an each ;TI"Nmethod, which defines what elements should be iterated over and how. In ;TI"Ncase of Array's #each, all elements in the Array instance are yielded to ;TI"$the supplied block in sequence.;T@o; ;[I"9Note that this operation leaves the array unchanged.;T@o;;[ I"arr = [1, 2, 3, 4, 5] ;TI"'arr.each {|a| print a -= 10, " "} ;TI"# prints: -9 -8 -7 -6 -5 ;TI"#=> [1, 2, 3, 4, 5] ;T;0o; ;[I"PAnother sometimes useful iterator is #reverse_each which will iterate over ;TI"0the elements in the array in reverse order.;T@o;;[ I"7words = %w[first second third fourth fifth sixth] ;TI"str = "" ;TI"3words.reverse_each {|word| str += "#{word} "} ;TI"8p str #=> "sixth fifth fourth third second first " ;T;0o; ;[I"MThe #map method can be used to create a new array based on the original ;TI"?array, but with the values modified by the supplied block:;T@o;;[ I"0arr.map {|a| 2*a} #=> [2, 4, 6, 8, 10] ;TI"/arr #=> [1, 2, 3, 4, 5] ;TI"1arr.map! {|a| a**2} #=> [1, 4, 9, 16, 25] ;TI"1arr #=> [1, 4, 9, 16, 25] ;T;0S;;i; I""Selecting Items from an Array;T@o; ;[ I"OElements can be selected from an array according to criteria defined in a ;TI"Lblock. The selection can happen in a destructive or a non-destructive ;TI"Omanner. While the destructive operations will modify the array they were ;TI"Pcalled on, the non-destructive methods usually return a new array with the ;TI"?selected elements, but leave the original array unchanged.;T@S;;i; I"Non-destructive Selection;T@o;;[ I"arr = [1, 2, 3, 4, 5, 6] ;TI"0arr.select {|a| a > 3} #=> [4, 5, 6] ;TI"3arr.reject {|a| a < 3} #=> [3, 4, 5, 6] ;TI"0arr.drop_while {|a| a < 4} #=> [4, 5, 6] ;TI"9arr #=> [1, 2, 3, 4, 5, 6] ;T;0S;;i; I"Destructive Selection;T@o; ;[I"P#select! and #reject! are the corresponding destructive methods to #select ;TI"and #reject;T@o; ;[I"LSimilar to #select vs. #reject, #delete_if and #keep_if have the exact ;TI"7opposite result when supplied with the same block:;T@o;;[I"/arr.delete_if {|a| a < 4} #=> [4, 5, 6] ;TI"/arr #=> [4, 5, 6] ;TI" ;TI"arr = [1, 2, 3, 4, 5, 6] ;TI"-arr.keep_if {|a| a < 4} #=> [1, 2, 3] ;TI",arr #=> [1, 2, 3];T;0: @fileI"array.c;T:0@omit_headings_from_table_of_contents_below0o;;[ ;I" array.rb;T;0o;;[ ;I"lib/abbrev.rb;T;0o;;[ ;I"lib/mkmf.rb;T;0o;;[ ;I"lib/racc/compat.rb;T;0o;;[ ;I"lib/shellwords.rb;T;0o;;[o; ;[I"for pack.c;T;I"pack.rb;T;0;0;0[ [ [[I"Enumerable;To;;[ ;@;0I"array.c;T[[I" class;T[[:public[[I"[];T@�[I"new;T@�[I"try_convert;T@�[:protected[ [:private[ [I" instance;T[[;[s[I"&;T@�[I"*;T@�[I"+;T@�[I"-;T@�[I"<<;T@�[I"<=>;T@�[I"==;T@�[I"[];T@�[I"[]=;T@�[I"abbrev;TI"lib/abbrev.rb;T[I" all?;T@�[I" any?;T@�[I"append;T@�[I" assoc;T@�[I"at;T@�[I"bsearch;T@�[I"bsearch_index;T@�[I" clear;T@�[I"collect;T@�[I" collect!;T@�[I"combination;T@�[I"compact;T@�[I" compact!;T@�[I"concat;T@�[I" count;T@�[I" cycle;T@�[I"deconstruct;T@�[I"delete;T@�[I"delete_at;T@�[I"delete_if;T@�[I"difference;T@�[I"dig;T@�[I" drop;T@�[I"drop_while;T@�[I" each;T@�[I"each_index;T@�[I"empty?;T@�[I" eql?;T@�[I" fetch;T@�[I" fill;T@�[I"filter;T@�[I"filter!;T@�[I"find_index;T@�[I" first;T@�[I"flatten;T@�[I" flatten!;T@�[I" hash;T@�[I" include?;T@�[I" index;T@�[I"initialize_copy;T@�[I"insert;T@�[I"inspect;T@�[I"intersection;T@�[I" join;T@�[I"keep_if;T@�[I" last;T@�[I"length;T@�[I"map;T@�[I" map!;T@�[I"max;T@�[I"min;T@�[I"minmax;T@�[I" none?;T@�[I" one?;T@�[I" pack;TI"pack.rb;T[I"permutation;T@�[I"pop;T@�[I"prepend;T@�[I"product;T@�[I" push;T@�[I"rassoc;T@�[I"reject;T@�[I"reject!;T@�[I"repeated_combination;T@�[I"repeated_permutation;T@�[I"replace;T@�[I"reverse;T@�[I" reverse!;T@�[I"reverse_each;T@�[I"rindex;T@�[I"rotate;T@�[I"rotate!;T@�[I"sample;TI" array.rb;T[I"select;T@�[I"select!;T@�[I"shelljoin;TI"lib/shellwords.rb;T[I" shift;T@�[I"shuffle;T@Z[I" shuffle!;T@Z[I" size;T@�[I" slice;T@�[I"slice!;T@�[I" sort;T@�[I" sort!;T@�[I" sort_by!;T@�[I"sum;T@�[I" take;T@�[I"take_while;T@�[I" to_a;T@�[I"to_ary;T@�[I" to_h;T@�[I" to_s;T@�[I"transpose;T@�[I" union;T@�[I" uniq;T@�[I" uniq!;T@�[I"unshift;T@�[I"values_at;T@�[I"zip;T@�[I"|;T@�[;[ [;[ [ [U:RDoc::Context::Section[i 0o;;[ ;0;0[@@�@�I"lib/csv/core_ext/array.rb;T@�I"lib/pp.rb;T@�@�@�@�cRDoc::TopLevel