ruby : Array Class
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¸Þ´º¾ó>30>Array



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Array

ArrayÀº integerÇü ¼ýÀÚ¸¦ »öÀÎÀ¸·Î °´Ã¼¸¦ ÀúÀåÇϰí Á¢±ÙÇϱâ À§Çؼ­ »ç¿ëÇϴ Ŭ·¡½º´Ù. Array´Â C³ª JavaÀÇ ¹è¿­°ú ¸¶Âù°¡Áö·Î 0ºÎÅÍ ½ÃÀÛÇÑ´Ù. C¾ð¾î¿Í ´Þ¸® À½ÀÇ Á¤¼ö¸¦ »öÀÎÀ¸·Î ÇÒ ¼ö Àִµ¥, ÀÌ °æ¿ì ¹è¿­ÀÇ ³¡¿¡¼­ ºÎÅÍ »öÀÎÀ» ½ÃÀÛÇÑ´Ù. ¿¹¸¦ µé¾î -1Àº ¹è¿­ÀÇ ¸¶Áö¸· ¿ø¼Ò, -2´Â ¸¶Áö¸·¿¡¼­ µÎ¹øÂ° ¿ø¼Ò´Ù.

Public Class Methods

[] (*args)

args¸¦ ¿ø¼Ò·ÎÇÏ´Â »õ ¹è¿­À» ¸¸µç´Ù.
Array.[](1, 'a', /^A/) 
Array[1, 'a', /^A/] 
[1, 'a', /^A/] 
 

new

  1. new (size=0, obj=mil)
  2. new (array)
  3. new (size) {|index| block}
»õ·Î¿î ¹è¿­À» ¹ÝȯÇÑ´Ù. ù¹øÂ° ½ÄÀº Å©±â°¡ 0ÀÎ ¹è¿­À» ¹ÝȯÇÑ´Ù. 2¹øÂ° ¹è¿­Àº °´Ã¼¸¦ size Å©±â ¸¸Å­ °¡Áø ¹è¿­À» ¸¸µç´Ù. ¼¼¹øÂ° Çü½ÄÀº size ¸¸Å­ °ýÈ£¿¡ ÀÖ´Â ½ÄÀ» ¼öÇàÇÏ°í ±× °á°ú¸¦ ¹è¿­¿¡ ÀúÀåÇÑ´Ù.
a = Array.new(2, Hash.new) 
a[0]['cat'] = 'feline' 
a[1]['cat'] = 'Felix' 
 
# Hash °´Ã¼¸¦ ¿ø¼Ò 2°³¸¦ °¡Áö´Â ¹è¿­À» ¸¸µç´Ù. 
a = Array.new(2) { Hash.new } 
a[0]['cat] = 'feline' 
 
# 1 ºÎÅÍ 5±îÁö Á¦°öÇÑ °á°ú¸¦ °¡Áö´Â ¹è¿­À» ¸¸µç´Ù.  
squares = Array.new(5) {|i| i*i} 
squares 
 
copy = Array.new(squares) 
 

try_convert(obj) -> array or nil

to_ary¸Þ¼­µå¸¦ ÀÌ¿ëÇØ¼­ obj¸¦ ¹è¿­·Î º¯È¯À» ÇÑ´Ù. º¯È¯¿¡ ¼º°øÇÏ¸é ¹è¿­À» ¹ÝȯÇÏ°í ½ÇÆÐÇϸé nilÀ» ¹ÝȯÇÑ´Ù. ÀÌ ¸Þ¼­µå´Â ÁÖ·Î ¸Å°³º¯¼ö°¡ ¹è¿­ÀÎÁö È®ÀÎÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù.
Array.try_convert([1])   #=> [1] 
Array.try_convert("1")   #=> nil 
 
if tmp = Array.try_convert(arg) 
  # arg´Â ¹è¿­ÀÌ´Ù.  
elsif tmp = String.try_convert(arg) 
  # arg´Â stringÀÌ´Ù.  
end 
 

Public Instance Method

ary & other_ary -> new_ary

±³ÁýÇÕ ¿¬»êÀ» ÇÑ´Ù. µÎ ¹è¿­¿¡¼­ Áߺ¹µÈ ¿ø¼Ò¸¸À» °ñ¶ó¼­ »õ·Î¿î ¹è¿­À» ¸¸µç´Ù.
[ 1, 1, 3, 5] & [ 1, 2, 3 ] 
 

ary * int -> new_ary

ary * str -> new_string

¹Ýº¹ ¿¬»êÀ» ÇÑ´Ù. Á¤¼öÀÏ °æ¿ì Á¤¼ö Å©±â¸¸Å­ ¿ø¼Ò¸¦ º¹»çÇÑ´Ù. ¹®ÀÚ¿­ÀÏ °æ¿ì join ¿¬»êÀ» ÇÑ´Ù.
[1, 2, 3] * 3    # [1, 2, 3, 1, 2, 3, 1, 2, 3] 
[1, 2, 3] * ":"  # "1:2:3" 
 

ary + other_ary -> new_ary

µÎ ¹è¿­À» ¿¬°áÇØ¼­ »õ ¹è¿­À» ¸¸µç´Ù.
[ 1, 2, 3 ] + [ 4, 5 ] = [ 1, 2, 3, 4, 5 ] 
 

ary - other_ary -> new_ary

Â÷ÁýÇÕ ¿¬»êÀ» ÇÑ´Ù. µÎ°³ÀÇ ¹è¿­¿¡¼­ Áߺ¹µÈ ¿ø¼Ò¸¦ Á¦¿ÜÇÑ °ªÀ» ¿ø¼Ò·Î ÇÏ´Â »õ·Î¿î ¹è¿­À» ¸¸µç´Ù.
[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ]  #=>  [ 3, 3, 5 ] 
 

ary << obj -> ary

¹è¿­ÀÇ ³¡¿¡ °´Ã¼¸¦ Ãß°¡ÇÑ´Ù.
[ 1, 2 ] << "c" << "d" << [ 3, 4 ] #=>  [ 1, 2, "c", "d", [ 3, 4 ] ] 
 

ary <=> other_ary -> -1, 0, +1 or nil

¹è¿­À» ºñ±³ÇÑ´Ù. ¿ÞÂʰú ¿À¸¥ÂÊ ¹è¿­ÀÌ °°À¸¸é 0, ÀÛÀ¸¸é -1, Å©¸é +1À» ¹ÝȯÇÑ´Ù.
[ "a", "a", "c" ]    <=> [ "a", "b", "c" ]   #=> -1 
[ 1, 2, 3, 4, 5, 6 ] <=> [ 1, 2 ]            #=> +1 
 

ary == other_ary -> bool

¹è¿­À» ºñ±³Çؼ­ °°À¸¸é true, ´Ù¸£¸é false¸¦ ¹ÝȯÇÑ´Ù.

aryindex -> obj or nil

ary[start, length] -> new_ary or nil

aryrange -> new_ary or nil

slice(index) -> obj

slice(start, length) -> new_ary or nil

slice(range) -> new_ary or nil

¹è¿­ÀÇ ¿ø¼Ò¿¡ Á¢±ÙÇϱâ À§ÇÑ ´Ù¾çÇÑ ¹æ¹ý. indexÀ§Ä¡¿¡ ÀÖ´Â ¹è¿­ ¿ø¼Ò¸¦ °¡Á®¿Â´Ù. start¸¦ ¸í½ÃÇÒ °æ¿ì start¿¡¼­ length ¹üÀ§±îÁöÀÇ ¿ø¼Ò¸¦ ¹è¿­·Î ¹ÝȯÇÑ´Ù. ¹üÀ§´Â ".."À» ÀÌ¿ëÇÑ´Ù. À½ÀÇ Á¤¼ö¸¦ »ç¿ëÇÏ¸é ¹è¿­ÀÇ µÚ¿¡¼­ Á¢±ÙÇÑ´Ù.
a = [ "a", "b", "c", "d", "e" ] 
a[2] +  a[0] + a[1]    #=> "cab" 
a[6]                   #=> nil 
a[1, 2]                #=> [ "b", "c" ] 
a[1..3]                #=> [ "b", "c", "d" ] 
a[4..7]                #=> [ "e" ] 
a[6..10]               #=> nil 
a[-3, 3]               #=> [ "c", "d", "e" ] 
# special cases 
a[5]                   #=> nil 
a[5, 1]                #=> [] 
a[5..10]               #=> [] 
 

aryindex = obj -> obj

ary[start, length] = obj or other_ary or nil -> obj or other_ary or nil

==== aryrange = obj or other_ary or nil -> obj or other_ary or nil
a = Array.new 
a[4] = "4";                 #=> [nil, nil, nil, nil, "4"] 
a[0, 3] = [ 'a', 'b', 'c' ] #=> ["a", "b", "c", nil, "4"] 
a[1..2] = [ 1, 2 ]          #=> ["a", 1, 2, nil, "4"] 
a[0, 2] = "?"               #=> ["?", 2, nil, "4"] 
a[0..2] = "A"               #=> ["A", "4"] 
a[-1]   = "Z"               #=> ["A", "Z"] 
a[1..-1] = nil              #=> ["A", nil] 
a[1..-1] = []               #=> ["A"] 
 

assoc(obj) -> new_ary or nil

¹è¿­ÀÌ ¿©·¯ °´Ã¼·Î ÀÌ·ç¾îÁ³À» ¶§, obj·Î ½ÃÀÛÇÏ´Â °´Ã¼¸¦ ã¾Æ¼­ ¹ÝȯÇÑ´Ù. ãÁö ¸øÇß´Ù¸é nilÀ» ¹ÝȯÇÑ´Ù.
s1 = [ "colors", "red", "blue", "green" ] 
s2 = [ "letters", "a", "b", "c" ] 
s3 = "foo" 
a = [ s1, s2, s3 ]   #  [ "letters", "a", "b", "c" ] 
a.assoc("foo")       # nil 
 

at(index) -> obj or nil

¹è¿­¿¡¼­ index À§Ä¡¿¡ ÀÖ´Â °´Ã¼¸¦ ¹ÝȯÇÑ´Ù. À½ÀÇ Á¤¼ÒÀÏ °æ¿ì µÚ¿¡¼­ Ž»öÇÑ´Ù.
a = [ "a", "b", "c", "d", "e" ] 
 
a.at(0)   # "a" 
a.at(-1)  # "e" 
 

clear -> any

¹è¿­¿¡¼­ ¿ø¼Ò¸¦ Á¦°ÅÇÑ´Ù.
a = [ "a", "b", "c", "d", "e" ] 
a.clear   # nil 
 

compact -> new_ary

¹è¿­¿¡¼­ nilÀ» Á¦°ÅÇÑ »õ·Î¿î ¹è¿­À» ¹ÝȯÇÑ´Ù. ¿ø·¡ ¹è¿­Àº ±×´ë·Î´Ù.
a = [ "a", nil, "b", nil, "c", nil, "d", nil, "e" ] 
a.compact   # [ "a", "b", "c", "d", "e" ] 
 

compact! -> ary or nil

¿ø·¡ ¹è¿­¿¡¼­ nilÀ» Á¦°ÅÇÑ´Ù.
[ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ] 
[ "a", "b", "c" ].compact!           #=> nil 
 

concat(other_ary) -> ary

¹è¿­¿¡ otehr_ary ¹è¿­À» Ãß°¡ÇÑ´Ù.
[ "a", "b" ].concat( ["c", "d"] ) #=> [ "a", "b", "c", "d" ] 
 

count -> int

count(obj) -> int

count{ |item| block } -> int

¹è¿­ ¿ø¼ÒÀÇ °¹¼ö¸¦ ¹ÝȯÇÑ´Ù. objÀ» ¸Å°³ º¯¼ö·Î »ç¿ëÇÒ °æ¿ì, obj°ú °°Àº ¿ø¼ÒÀÇ °¹¼ö¸¦ ¹ÝȯÇÑ´Ù. blockÀ» ÀÌ¿ëÇÒ °æ¿ì blockÀÇ ½ÄÀ» ¸¸Á·ÇÏ´Â ¿ø¼ÒÀÇ °¹¼ö¸¦ ¹ÝȯÇÑ´Ù.
ary = [1, 2, 4, 2] 
ary.count             #=> 4 
ary.count(2)          #=> 2 
ary.count{|x|x%2==0}  #=> 3 
 

cycle(n=nill) {|obj| block} -> nil

cycle(n=nill) an_enumerator

blockÀ» n ¹ø¸¸Å­ ¹Ýº¹ÇÑ´Ù. ¸¸¾à nÀÌ nilÀ̶ó¸é ¹«ÇÑ ¹Ýº¹ÇÑ´Ù. ¹Ýº¹ÀÌ ³¡³ª¸é nilÀ» ¹ÝȯÇÑ´Ù.
a = ["a", "b", "c"] 
a.cycle {|x| puts x }  # print, a, b, c, a, b, c,.. forever. 
a.cycle(2) {|x| puts x }  # print, a, b, c, a, b, c. 
 

delete (obj) -> obj or nil

delete (obj) { block } -> obj or nil

¹è¿­¿¡¼­ object¿Í °°Àº ¿ø¼Ò¸¦ »èÁ¦ÇÑ´Ù. »èÁ¦ÇÒ ¿ø¼Ò¸¦ ã¾Ò´Ù¸é obj¸¦ ¹ÝȯÇÑ´Ù. ¸¸¾à obj¸¦ ãÁö ¸øÇß´Ù¸é nilÀ» ¹ÝȯÇÑ´Ù. ¿ø¼Ò¸¦ ãÁö ¸øÇÒ °æ¿ì ½ÇÇàÇÒ Äڵ带 ºí·°¿¡ ´ãÀ» ¼ö ÀÖ´Ù.
#!/usr/bin/ruby 
 
a = [ "a", "b", "b", "b", "c" ] 
a.delete("b")                   #=> "b" 
a                               #=> ["a", "c"] 
a.delete("z")                   #=> nil 
a.delete("z") { "not found" }   #=> "not found" 
 

delete_at (index) -> obj or nil

¹è¿­¿¡¼­ index À§Ä¡ÀÇ ¿ø¼Ò¸¦ »èÁ¦ÇÑ´Ù. ¼º°øÀûÀ¸·Î »èÁ¦Çß´Ù¸é »èÁ¦ÇÑ ¿ø¼Ò¸¦ ¹Ýȯ ÇÏ°í ±×·¸Áö ¾Ê´Ù¸é nilÀ» ¹ÝȯÇÑ´Ù.
a = %w( ant bat cat dog ) 
a.delete_at(2)    #=> "cat" 
a                 #=> ["ant", "bat", "dog"] 
a.delete_at(99)   #=> nil 
 

delete_if {|item| block} -> ary

delete_if -> en_enumerator

»èÁ¦ÇÒ ¶§ Á¶°ÇÀ» ÄÚµå·Î ÁÙ ¼ö ÀÖ´Ù.
a = [ "a", "b", "c" ] 
a.delete_if {|x| x >= "b" }   #=> ["a"] 
 

droip (n) -> new_ary

0¹øÂ° ¿ø¼ÒºÎÅÍ n¹øÂ° ¿ø¼Ò±îÁö »èÁ¦ÇÑ´Ù.
a = [1, 2, 3, 4, 5, 0] 
a.drop(3)             #=> [4, 5, 0] 
 

each {|item| block} -> ary

each -> an_enumerator

¹è¿­ÀÇ ¿ø¼Ò¸¦ °¡Á®¿Í¼­ ºí·°¿¡¼­ ¿¬»êÇÑ´Ù.
a = [ "a", "b", "c" ] 
a.each {|x| print x, " -- " } 
 

each_index {|index| blok} -> ary

==== each_index -> an_enumerator====
¹è¿­ °ª (¿ø¼Ò)´ë½Å index °ªÀ» °¡Á®¿Â´Ù´Â °ÍÀ» Á¦¿ÜÇϰí´Â array.each¿Í °°´Ù.
a = [ "a", "b", "c" ] 
a.each_index {|x| print x, " -- " }  # 0 -- 1 -- 2 -- 
 

enpty? -> true or false

¸¸¾à ¹è¿­¿¡ ¿ø¼Ò°¡ ÀÖ´Ù¸é, treu ¾ø´Ù¸é false¸¦ ¹ÝȯÇÑ´Ù.
[].empty?    #=> true 
 

eql? (other) -> true or false

¹è¿­ other°ú °°ÀºÁö °Ë»çÇÑ´Ù. °°´Ù¸é true ´Ù¸£´Ù¸é, false¸¦ ¹ÝȯÇÑ´Ù.
a = [ "a", "b", "c" ] 
b = [ "a", "b", "c" ] 
a.eql?(b)              # true 
 

fetch (index) -> obj

fetch (index, default) -> obj

fetch (index) {|index| block} -> obj

¹è¿­¿¡¼­ indexÀÌ °ªÀ» ¹Ýȯ ½Ãµµ¸¦ ÇÑ´Ù. ¸¸¾à index°¡ ¹è¿­ Å©±â¸¦ ¹þ¾î³ª´Â °÷À» °¡¸®Å°¸é, IndexError ¿¹¿Ü¸¦ ¹ß»ýÇÑ´Ù. ¸¸¾à default¸¦ ¸í½ÃÇß´Ù¸é, IndexError´ë½Å default¸¦ ¹ÝȯÇÑ´Ù. ºí·°ÀÌ ÀÖ´Ù¸é, ºí·°ÀÇ Äڵ带 ½ÇÇàÇÑ´Ù.
a = [ 11, 22, 33, 44 ] 
a.fetch(1)               #=> 22 
a.fetch(-1)              #=> 44 
a.fetch(4, 'cat')        #=> "cat" 
a.fetch(4) { |i| i*i }   #=> 16 
 

fill (obj) -> ary

fill (obj, start [, length]) -> ary

fill (obj, range) -> ary

fill {|index| block} -> ary

fill (start [,length]) {|index| block} -> ary

fill (range {|index| block} -> ary

¹è¿­ÀÇ ¿ø¼Ò¸¦ ƯÁ¤ °´Ã¼·Î ä¿ì±â À§Çؼ­ »ç¿ëÇÑ´Ù. start¿Í length·Î ä¿ï ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ°í, ºí·°À» ÀÌ¿ëÇØ¼­ ä¿ï °ªÀ» ÄÚµåÈ­ ÇÒ ¼öµµ ÀÖ´Ù.
a = [ "a", "b", "c", "d" ] 
a.fill("x")              #=> ["x", "x", "x", "x"] 
a.fill("z", 2, 2)        #=> ["x", "x", "z", "z"] 
a.fill("y", 0..1)        #=> ["y", "y", "z", "z"] 
a.fill {|i| i*i}         #=> [0, 1, 4, 9] 
a.fill(-2) {|i| i*i*i}   #=> [0, 1, 8, 27] 
 

index (obj) -> int or nil

index {|item| block} -> int or nil

index -> an_enumerator

¹è¿­¿¡¼­ obj¿Í °°Àº ¿ø¼ÒÀÇ index¸¦ ¹ÝȯÇÑ´Ù.
a = [ "a", "b", "c" ] 
a.index("b")        #=> 1 
a.index("z")        #=> nil 
a.index{|x|x=="b"}  #=> 1 
 

first -> obj or nil

first(n) -> new_ary

¹è¿­ÀÇ Ã¹¹øÂ° ¿ø¼Ò¸¦ ¹ÝȯÇÑ´Ù. ȤÀº óÀ½ ºÎÅÍ n ¹øÂ°±îÁöÀÇ ¿ø¼Ò¸¦ Æ÷ÇÔÇÑ ¹è¿­À» ¹ÝȯÇÑ´Ù.
a = [ "q", "r", "s", "t" ] 
a.first     #=> "q" 
a.first(2)  #=> ["q", "r"] 
 

flatten -> new_ary

flatten (level) -> new_ary

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.