U E D R , A S I H C RSS

Ruby Language/Container

1. μ»¨ν…Œμ΄λ„ˆ

  • κ°μ²΄λΌ κ΅¬μ‘°ν™”λœ λ°©λ²•μœΌλ‘œ μ €μž₯ν•΄λ‘˜ 수 μžˆλŠ” 좔상 데이터 νƒ€μž…(ADT)
  • λ°°μ—΄κ³Ό ν•΄μ‹œλŠ”
    • Ruby ν”„λ‘œκ·Έλž˜λ°μ— μžˆμ–΄ κ°€μž₯ 기본적인 μ»¨ν…Œμ΄λ„ˆ 객체이닀.
    • λ‹€λ₯Έ 객체둜의 μ°Έμ‘°λΌ μ €μž₯ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆμ΄λ‹€.
  • RubyλŠ” iteratorλΌ ν†΅ν•΄ μ»¨ν…Œμ΄λ„ˆ μƒμ˜ λ°˜λ³΅μ„ μžμ—°μŠ€λŸ½κ²Œ ν‘œκΈ°ν•  수 μžˆλ‹€.

1.1. λ°°μ—΄

  • 객체둜의 μ°Έμ‘°λΌ μ°¨λ€λŒ€λ‘œ λ‚˜μ—΄ν•œ 것.
    • 배열이 μ €μž₯ν•˜κ³  μžˆλŠ” 것은 객체 κ·Έ μžμ²΄κ°€ μ•„λ‹ˆλ‹€.
    • 객체 μžμ²΄λΌ λ³€κ²½ν•˜λ©΄ κ·Έ κ°μ²΄λΌ μ°Έμ‘°ν•˜κ³  μžˆλŠ” λͺ¨λ“  λ°°μ—΄μš”μ†Œμ˜ 값도 λ³€ν™”ν•œλ‹€.
  • μš”μ†Œ
    • 배열이 μ €μž₯ν•˜κ³  μžˆλŠ” 각각의 객체 μ°Έμ‘°.
    • λ°°μ—΄μ˜ μš”μ†Œκ°€ λ™μΌν•œ μžλ£Œν˜•μΌ ν•„μš”λŠ” μ—†λ‹€.
    • μš”μ†Œλ‘œ 배열을 포함할 μˆ˜λ„ μžˆλ‹€.
  • 첨자
    • λ°°μ—΄μ˜ μš”μ†Œκ°€ λͺ‡λ²ˆμ§Έ μˆœμ„œμΈμ§€ κ°€λ¦¬ν‚€λŠ” 번호.
    • 0λΆ€ν„° μ‹œμž‘ν•œλ‹€.

1.1.1. 생성

  • λ¦¬ν„°λŸ΄λ‘œ 생성

array = ["a", "b", 3, "String", [1, 2]]
  • Array.new둜 생성

array = Array.new

1.1.2. 첨자참쑰

  • 첨자참쑰 μ—°μ‚°μž
    • [] λΌ μ‚¬μš©ν•΄ μ°Έμ‘° μœ„μΉ˜μ˜ 객체에 μ ‘κ·Όν•  수 μžˆλ‹€.
    • ν•΄λ‹Ήν•˜λŠ” μš”μ†Œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ²¨μžμ— λŒ€ν•΄μ„œλŠ” nil을 λ°˜ν™˜ν•œλ‹€.

a, b = 1, 2
array = [a, b, 3, "String", [1, 2]]
coffee = ["아메리카노", "카페λͺ¨μΉ΄", "μΉ΄ν‘ΈμΉ˜λ…Έ"]

array[0]    #array λ°°μ—΄μ˜ 첫번째 μš”μ†ŒμΈ a에 μ ‘κ·Ό
p array[0]  #a의 값인 1 좜λ ₯ 
coffee[2]   #coffee λ°°μ—΄μ˜ μ„Έλ²ˆμ§Έ μš”μ†ŒμΈ "μΉ΄ν‘ΈμΉ˜λ…Έ"에 μ ‘κ·Ό
p coffee[2] #"μΉ΄ν‘ΈμΉ˜λ…Έ" 좜λ ₯
coffee[3]   #coffee λ°°μ—΄μ˜ λ„λ²ˆμ§Έ μš”μ†Œμ— μ ‘κ·Όν•˜λ‚˜ μš”μ†Œκ°€ μ—†μœΌλ€λ‘œ nil λ°˜ν™˜
[1]
  • 음의 첨자
    • 음의 첨자 μ‚¬μš©μ‹œ λ’€μ—μ„œλΆ€ν„° μ—­μˆœμœΌλ‘œ μš”μ†ŒλΌ κ°€λ¦¬ν‚¨λ‹€.
    • a[-n] = a[a.length - n]

array = [3, "String", [1, 2]]

p array[-2]  #"String" 좜λ ₯
  • κΈΈμ΄λΌ ν¬ν•¨ν•œ 첨자
    • μœ„μΉ˜μ™€ κΈΈμ΄λΌ μ§€μ •ν•˜λŠ” 참쑰방법
    • namen, m : name λ°°μ—΄μ˜ n μœ„μΉ˜λΆ€ν„° μ΅œλŒ€ m개의 μš”μ†ŒλΌ ν¬ν•¨ν•˜λŠ” μƒˆλ‘œμš΄ λ°°μ—΄ κ°μ²΄λΌ μƒμ„±ν•˜μ—¬ λ°˜ν™˜

a, b = 1, 2
array = [a, b, 3, "String", [1, 2]]

p array[1, 2]  #[2, 3] 좜λ ₯
p array[3, 3]  #["String", [1, 2]] 좜λ ₯
p array[-5, 3] #[1, 2, 3] 좜λ ₯
  • λ²”μœ„ 첨자
    • λ²”μœ„ μ•ˆμ— ν¬ν•¨λ˜λŠ” μš”μ†ŒλΌ μ–»μ„ 수 μžˆλ‹€.

a, b = 1, 2
array = [a, b, 3, "String", [1, 2]]

p array[0..2]  #[1, 2, 3] 좜λ ₯
p array[0...2] #[1, 2] 좜λ ₯
p array[-4, 3] #[2, 3, "String"] 좜λ ₯

1.1.3. μ²¨μžλŒ€μž…

  • μ²¨μžλŒ€μž…μ„ μ΄μš©ν•¨μœΌλ‘œμ¨ λ°°μ—΄μ˜ λ‚΄μš©μ„ κ°±μ‹ ν•  수 μžˆλ‹€.
    • [] μ—°μ‚°μžμ— λŒ€μž…λ¬Έμ„ κ²°ν•©ν•œ ν˜•νƒœ
    • λ°°μ—΄μ˜ κΈΈμ΄λΌ λ„˜μ–΄μ„œλŠ” μœ„μΉ˜μ—λ„ λŒ€μž…μ΄ κ°€λŠ₯ν•˜λ‹€.(line 4)
      • 배열은 μžλ™ν™•μž₯되며 μ€‘κ°„μ˜ 곡백은 nil둜 μ±„μ›Œμ§„λ‹€.
    • κΈΈμ΄λΌ ν¬ν•¨ν•œ μ²¨μžλ‚˜ λ²”μœ„ μ²¨μžλΌ μ‚¬μš©ν•œ 경우, μš°λ³€μ— 볡수 개의 값을 μ·¨ν•  수 μžˆλ‹€.(line 5, 6)
    • μ’Œλ³€μ˜ μš”μ†Œκ°œμˆ˜λ³΄λ‹€ μš°λ³€ 식이 적은 경우 λͺ¨μžλž€ λΆ€λΆ„μ˜ μš”μ†ŒλŠ” 제거되고 λ°°μ—΄μ˜ 크기가 μ„μ–΄λ“ λ‹€.(line 7)
    • μ’Œλ³€μ— μ§€μ •ν•œ μš”μ†Œκ°œμˆ˜λ³΄λ‹€ μš°λ³€ 식이 λ§Žμ€ 경우 λ°°μ—΄μ˜ ν¬κΈ°λΌ λŠ˜λ €μ„œ λŒ€μž…ν•œλ‹€.(line 9)

array = [1, 2]

array[0] = 3                #[3, 2]
array[4] = 4                #[3, 2, nil, nil, 4]
array[0, 3] = 'a', 'b', 'c' #["a", "b", "c", nil, 4]
array[1..2] = 7, 8          #["a", 7, 8, nil, 4]
array[0, 3] = "First"       #["First", nil, 4]
array[-2] = "2nd"           #["First", "2nd", 4]
array[0, 2] = 1, 2, 3       #[1, 2, 3, 4]

1.1.4. 비ꡐ

  • λ°°μ—΄ κ°μ²΄λΌλ¦¬λŠ” λŒ€μ‘ν•˜λŠ” μš”μ†Œκ°€ λͺ¨λ‘ 동일할 κ²½μš°μ— ν•œν•΄μ„œλ§Œ κ°™λ‹€.

array1 = [1, 2, "str"]
array2 = [1, 2, "str"]

array1 == array2         #true
array1 == ["str", 1, 2]  #false: μˆœμ„œκ°€ λ‹€λ₯΄λ‹€

1.1.5. λ©”μ„œλ“œ

λͺ¨λ“  배열은 Array 클래슀의 μΈμŠ€ν„΄μŠ€λ‘œ, 배열은 κ·Έ μžμ²΄κ°€ 객체이닀. 배열은 λ‹€μ–‘ν•œ λ©”μ„œλ“œλΌ ν†΅ν•΄ μ‘°μž‘ν•  수 μžˆλ‹€.
  • 배열이 가진 λ©”μ„œλ“œ

1.2. ν•΄μ‹œ


----
  • [1] '''p λ©”μ„œλ“œ''' : κ°μ²΄λΌ λ””λ²„κ·Έμ— μ ν•©ν•œ ν˜•μ‹μœΌλ‘œ λ¬Έμžμ—΄ν™”ν•˜μ—¬ 좜λ ₯ν•˜λŠ” λ©”μ„œλ“œλ‘œ 주둜 디버그 좜λ ₯을 μœ„ν•΄ μ‚¬μš©. 디버그, ν•™μŠ΅, ShortCoding μ΄μ™Έμ—λŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹λ‹€.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:27:56
Processing time 0.0225 sec