2022.07.16

๐Ÿ‘ย  ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ์˜ˆ์ •

๋ฃจ๋น„๋Š” ์ปดํŒŒ์ผ ๋ฐฉ์‹์ด ์•„๋‹Œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์ด๋‹ค. ํŒŒ์ด์ฌ์ด๋ž‘ ๋น„์Šทํ•ด์„œ ์ข‹๋‹คโ€ฆ

  • ๊ฐ„๋‹จ ์ž‘๋ช… ๊ทœ์น™๊ณผ ๋ธ”๋ก

    ๋Œ€๋ถ€๋ถ„ ์Šค๋„ค์ดํฌ ํ‘œ๊ธฐ๋ฒ•์„ ๋”ฐ๋ฅด๊ณ  ํด๋ž˜์Šค๋Š” ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

    ๋ธ”๋ก์˜ ๊ฒฝ์šฐ {}์™€ do-end๋กœ ๋ธ”๋ก์„ ์ง€์ •ํ•œ๋‹ค.

๋ณ€์ˆ˜

๋ฃจ๋น„๋Š” ํƒ€์ž… ๊ตฌ๋ถ„์„ ํ•˜์ง€ ์•Š๊ณ  ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ์ž๋ฐ”์ฒ˜๋Ÿผ int a, String s ์ฒ˜๋Ÿผ ์˜ˆ์•ฝ์–ด๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋ฌผ๋ก , ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŽธ์˜์ƒ ๋งŽ์ด ์ƒ๋žตํ•œ๋‹ค. ๋˜ํ•œ ๋‹ค์ค‘ ๋Œ€์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

one = 1
avg = 3.5
name = "sara"
boy_friend = nil
game = [ "LoL", "Maple story" ]

# ๋‹ค์ค‘ ๋Œ€์ž…
birth_year, birth_month = 1999, "Dec"


Scope = ์„ ์–ธํ•˜๊ธฐ

์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋ฉด ์ „์—ญ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ๋“ฑ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. ํ•ด๋‹นํ•˜๋Š” ๋ณ€์ˆ˜๋“ค์„ ์–ด๋–ป๊ฒŒ ์„ ์–ธ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

# ์ง€์—ญ๋ณ€์ˆ˜๋Š” ๊ทธ๋ƒฅ ์ž‘์„ฑ
var

# ์ „์—ญ๋ณ€์ˆ˜๋Š” $๋ฅผ ๋ถ™์—ฌ์„œ
$var

# ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” @๋ฅผ ๋ถ™์—ฌ์„œ
@var

# ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” @@๋ฅผ ๋ถ™์—ฌ์„œ
@@var

์—ฌ๊ธฐ์„œ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™” ํ•ด์•ผํ•˜๊ณ , ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜, ์ „์—ญ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์ „ nil ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™” ์ „ nil ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์กฐ์‹ฌํ•˜์ž.


โ–ช๏ธย ๋‹ค์–‘ํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜๋“ค(์ž๋ฃŒํ˜•)

  • ์ˆซ์žํ˜• : ์ˆซ์ž ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜ [ Integer , Float ]

      num = 1
      num = 3.5
        
      # ๋˜๋Š”
      Integer num1 = 1
      Float num2 = 3.5
    
  • ๋ฌธ์žํ˜• : ๋ฌธ์ž์—ด ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜ [ String ]

      str1 = "string_1"
      str2 = "string_2 #{str1}" #์ถœ๋ ฅ: "string_2 string_1"
        
      # ๋˜๋Š”
      String str3 = 1 #์ถœ๋ ฅ: "1" 
    

    #{} ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ String์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜์—ฌ ์ˆซ์ž๋‚˜ ๋‹ค๋ฅธ ๊ฐ’์„ ๋„ฃ์–ด๋„ ๋ฌธ์ž์—ด๋กœ ์ง€์ •๋˜์ง€๋งŒ, 1 == โ€œ1โ€์€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • bool : true, false๋ฅผ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜ [ Bool ]

      bool1 = true
      bool2 = false
        
      # ๋˜๋Š”
      Bool bool1 = true 
    
  • nil : ๊ฐ’์ด ์—†์Œ [ Nil ]

      var = nil
    


โš ๏ธย nil ์ฃผ์˜์ 

nil์˜ ๊ฒฝ์šฐ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ ์–ธ์–ด์—์„œ 0์€ false๋ฅผ ์˜๋ฏธํ•˜์ง€๋งŒ, ๋ฃจ๋น„์—์„œ๋Š” ๋‹ค๋ฅด๋‹ค. 0๋„ ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ while(0)์ด๋ผ๊ณ  ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋ฃจ๋น„์—์„œ๋Š” ์‹คํ–‰ํ•œ๋‹ค.

nil vs empty vs blank

์ž๋ฃŒ ๊ตฌ์กฐ์—์„œ ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ nil์˜ ๊ฒฝ์šฐ nil์„ ์ œ์™ธํ•œ [],{}, โ€˜โ€™, โ€˜ โ€™, false ๋“ฑ์€ ์ „๋ถ€ ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค. nil์ด์™ธ์— ๊ฐ’์„ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ empty์™€ blank๋ผ๋Š” ๊ฒƒ๋„ ์žˆ๋‹ค. empty๋Š” [], {}, โ€˜โ€™, โ€˜ โ€™์— ๋Œ€ํ•ด์„œ๋งŒ ์ธก์ •ํ•˜์—ฌ์„œ โ€˜ โ€™ ๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ์ „๋ถ€ ๊ฐ’์ด ๋น„์–ด์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค. ์ƒ์ˆ˜, bool, nil์€ ํŒ๋‹จํ•  ์ˆ˜ ์—†๋‹ค. blank์˜ ๊ฒฝ์šฐ, โ€˜ โ€™, โ€˜โ€™, [], {}, nil, false์— ๋Œ€ํ•ด์„œ ๋น„์–ด์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค. empty์™€ ๋‹ค๋ฅธ์ ์€ bool๊ณผ nil, ์ƒ์ˆ˜์— ๋Œ€ํ•ด์„œ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

present ๋Š” !blank์™€ ๊ฐ™๋‹ค.


์‹ฌ๋ณผ

์‹ฌ๋ณผ์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์œ ์ผํ•œ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ•ด๋‹น ์‹ฌ๋ณผ ์œ ์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์‹œ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

tmp1 = "dog"
tmp1.object_id # 57832957323 ์•„์ด๋””๊ฐ€ ์ž๋™ ํ• ๋‹น๋จ

tmp2 = "dog"
tmp2.object_id # 23595023615

์ด๋•Œ ๋‘ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•œ๋ฒˆ ์‹ฌ๋ณผ์„ ์ ์šฉํ•˜๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

temp1 = :dog
temp1.object_id # 13857918359

temp2 = :dog
temp2.object_id # 13857918359

์ด์ฒ˜๋Ÿผ ์‹ฌ๋ณผ์„ ์ด์šฉํ•˜๋ฉด ๋™์ผํ•œ ๊ฐ’, ID๋ฅผ ๊ฐ€์ง„๋‹ค. ํ•ด๋‹น object_id์˜ ๊ด€ํ•ด ์•„๋ž˜ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์š”์•ฝํ•˜๋ฉด ID๋Š” ํฌ์ธํ„ฐ์™€ ๊ฐ™๋‹ค. (ID๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์•„๋‹˜)


์—ฐ์‚ฐ์ž

๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฐ์ˆ ์—ฐ์‚ฐ(+, -, **, /, %,***,=), ๋…ผ๋ฆฌ์—ฐ์‚ฐ(!, ~, &&, ||), ๊ด€๊ณ„์—ฐ์‚ฐ(><, ==, <=>, <=, =>, !=, =~, !~)๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ ๋น„ํŠธ์™€ ๊ด€๋ จ๋œ ๋น„ํŠธ์—ฐ์‚ฐ(&, |, ^), ์‹œํ”„ํŠธ ์—ฐ์‚ฐ (>>, <<) ๋“ฑ์ด ์žˆ๋‹ค.


ํฌ๊ธฐ ๋น„๊ต <=>

<=> ์—ฐ์‚ฐ์ž์˜ ๊ฒฝ์šฐ ์ขŒํ•ญ์ด ํฌ๋ฉด 1, ๊ฐ™์œผ๋ฉด 0, ์šฐํ•ญ์ด ํฌ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

100 <=> 200 # -1
100 <=> 100 # 0
200 <=> 100 # 1


๋ฐฐ์—ด ์ง‘ํ•ฉ ์—ฐ์‚ฐ

๋ฐฐ์—ด ์ง‘ํ•ฉ ์—ฐ์‚ฐ์œผ๋กœ๋Š” ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ ์—ฐ์‚ฐ์œผ๋กœ ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

arr1 = [ 1, 2, 3, 4 ]
arr2 = [ 2, 4 ]

arr1&arr2 # ๊ต์ง‘ํ•ฉ [ 2, 4 ]
arr1|arr2 # ํ•ฉ์ง‘ํ•ฉ [ 1, 2, 3, 4 ]
arr1-arr2 # ์ฐจ์ง‘ํ•ฉ [ 1, 3 ]


์ฆ๊ฐ ์—ฐ์‚ฐ์ž๊ฐ€ ์—†๋‹ค..

++, โ€” ๋ผ๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— 1์ฆ๊ฐ€-๊ฐ์†Œ์˜ ๊ฒฝ์šฐ +=1 ์ด๋‚˜ -=1์œผ๋กœ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.


์ถœ๋ ฅํ•˜๊ธฐ ๋ฐ ํ‘œํ˜„ํ•˜๊ธฐ

์ฝ˜์†” ๋“ฑ์—์„œ ์ž…๋ ฅ์„ ๋ฐ›์„ ๋• gets.chomp์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. chomp๊ฐ€ ์—†์œผ๋ฉด ์—”ํ„ฐ๊นŒ์ง€ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.


print ์™€ puts

print์™€ puts๋Š” ๋‘˜๋‹ค ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„๋‹ค. ํ•˜์ง€๋งŒ, print๋Š” ๋งˆ์ง€๋ง‰์— ๊ฐœํ–‰๋ฌธ์ž(\n)๋ฅผ ๋ถ™์ด์ง€ ์•Š๊ณ , puts๋Š” ๊ฐœํ–‰๋ฌธ์ž(\n)๋ฅผ ๋ถ™์ธ๋‹ค.


#{}์œผ๋กœ ๋ฌธ์ž์—ด ์•ˆ์— ๋ณ€์ˆ˜ ๊ฐ’ ๋„ฃ๊ธฐ

#{}๋ฅผ ์ด์šฉํ•ด ํŠน์ • ๋ณ€์ˆ˜๊ฐ’์„ ๋ฌธ์ž์—ด์— ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

str1 = "text_1"
str2 = "str1 : #{str1}"  # ์ถœ๋ ฅ : "str1 : text_1"


%๋ฅผ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ ํ‘œํ˜„ํ•˜๊ธฐ

value = 100

%q("score #{value}\d") # ()๊ด„ํ˜ธ์•ˆ ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋ฌธ์ž์—ด๋กœ
# ์ถœ๋ ฅ: str #{value}\d

%Q("score #{value}\d") # ()ํŠน์ˆ˜๋ฌธ์ž, ๋ณ€์ˆ˜ ๋Œ€์ž… ์ด์™ธ ๋ชจ๋“  ๊ฒƒ์„ ๋ฌธ์ž์—ด๋กœ
# ์ถœ๋ ฅ: str 100 \d

%w(dog cat lion) # ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
# ์ถœ๋ ฅ: ["dog", "cat", "lion"]

%r(์ •๊ทœ์‹) # ์ •๊ทœ์‹์œผ๋กœ ๋ณ€ํ™˜
%s(#{animal}) # ์‹ฌ๋ณผ๋กœ ๋ณ€ํ™˜
%i(dog cat, lion) # ์‹ฌ๋ณผ ๋ฐฐ์—ด [:dog, :cat, :lion]์œผ๋กœ ๋ณ€ํ™˜


.. ๊ณผ โ€ฆ ์„ ์ด์šฉํ•ด ๋ฒ”์œ„ ํ‘œํ˜„ํ•˜๊ธฐ

..๊ณผ โ€ฆ์€ โ‰ค์™€ <๋ฅผ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์‹œ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ํŠน์ • ๋ฒ”์œ„์— ์†ํ•˜๋Š” ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

0..10  # 0~10 ์œผ๋กœ 0<= i <=10์— ํ•ด๋‹นํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

0...10 # 0~9 ๋กœ 0<= i <10์— ํ•ด๋‹นํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.


์กฐ๊ฑด๋ฌธ

์ด์ œ ํ•œ๋ฒˆ ์กฐ๊ฑด๋ฌธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์šฐ์„  ๋‹ค๋ฅธ ์–ธ์–ด๋“ค ์ฒ˜๋Ÿผ ? true:false ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

age = 24
puts age == 25 ? "๋ฐ˜์˜ค์‹ญ":"๋ฐ˜์˜ค์‹ญ ์•„๋‹˜"

# ์ถœ๋ ฅ
=> ๋ฐ˜์˜ค์‹ญ ์•„๋‹˜


if ์™€ else

if ์กฐ๊ฑด๋ฌธ์€ ๋‹ค๋ฅธ ์–ธ์–ด์ฒ˜๋Ÿผ ํ•ด๋‹น ์กฐ๊ฑด๋ฌธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด true๋ผ๋ฉด ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ์žฅ์ด๋‹ค. ์กฐ๊ฑด์˜ ๊ฐ’์€ boolean ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค. else๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ์กฐ๊ฑด์ด ์•„๋‹ ๋•Œ ์ˆ˜ํ–‰์‹œํ‚ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

# "์ˆ˜ํ–‰!"์„ ์ถœ๋ ฅํ•œ๋‹ค.
if true
	puts "์ˆ˜ํ–‰!"
end

=> "์ˆ˜ํ–‰!"

# ํ•œ์ค„ ์ฝ”๋“œ
puts "์ˆ˜ํ–‰" if true
if false
	puts "์ˆ˜ํ–‰"
else
	puts "์กฐ๊ฑด์ด ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค."
end

=> "์กฐ๊ฑด์ด ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

๋งŒ์•ฝ์— if else์ด์™ธ์— ๋ช‡๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋” ์žˆ๋‹ค๋ฉด elsif๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


if ์™€ elsif ์™€ else

if false
	puts "์ˆ˜ํ–‰"
elsif true
	puts "elsif ์ˆ˜ํ–‰"
else
	puts "์กฐ๊ฑด์ด ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค."
end

=> "elsif ์ˆ˜ํ–‰"


unless

unless ๋Š” if ๋ฌธ์˜ ๋ฐ˜๋Œ€์˜ ์˜๋ฏธ๋กœ ์กฐ๊ฑด๋ฌธ์ด false์ธ ๊ฒฝ์šฐ์— ์ถœ๋ ฅ๋œ๋‹ค. if์— not์„ ๋ถ™์ด๋Š”๊ฒƒ ๋ณด๋‹ค unless ๋ผ๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

unless true
	puts "true"
end

# ๋˜๋Š”
puts "true" unless true

=>
unless false
	puts "not false"
end

# ๋˜๋Š”
puts "not false" unless false

=> "not false"


Case, When

switch ๋ฌธ ์ฒ˜๋Ÿผ ํ•œ ๊ฐ’์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ถ„๊ธฐ๋ฅผ ๋‚˜๋ˆŒ๋•Œ ์œ ์šฉํ•˜๋‹ค.

def main
	today = "Mon"
	case today
	when "Mon"
		puts "์›”์š”์ผ ์ข‹์•„~!"
	when "Tue"
		puts "๋ถˆ ํ™”์š”์ผ..."
	when "Wen"
		puts "์ˆ˜์š”์ผ ๊ธ‰์‹์ด ๋ง›์žˆ์—ˆ๋Š”๋ฐ.."
	when "Thr"
		puts "๋ชฉ๋ชฉํ•˜๋„ค"
	when "Fri"
		puts "๋ถˆ๊ธˆ!"
	else
		puts "ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ"
	end
end


๋ฐ˜๋ณต๋ฌธ

0~9๊นŒ์ง€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋ฅผ ์ง ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž ์šฐ๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด์„œ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. for ์ด์šฉํ•˜๊ธฐ

    ์ฆ๊ฐ์‹ ๋Œ€์‹  ๋ฒ”์œ„์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ ์ž‘์„ฑ์‹œ ๋ณ„๋„์˜ return์ด ์—†์œผ๋ฉด return 0..9๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋‹ค๋ฅธ ์ฝ”๋“œ๋“ค์€ return nil.

     def main
     	for num in 0..9
     		puts num
     	end
     end
    
  2. while ์ด์šฉํ•˜๊ธฐ

     def main
     	i = 0
     	while i < 10 do
     		puts i
     		i += 1
     	end
     end
    
  3. until ์ด์šฉํ•˜๊ธฐ

    until์€ ์กฐ๊ฑด๋ฌธ์ด false์ผ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.

     # i!=10 ๋ผ๋ฉด ์ˆ˜ํ–‰
     def main
     	i = 0
     	until i == 10 do
     		puts i
     		i += 1
     	end
     end
    
  4. loop ์ด์šฉํ•˜๊ธฐ(break๊ฐ€ ์—†๋‹ค๋ฉด ๋ฌดํ•œ ๋ฃจํ”„)

     def main
     	i = 0
     	loop do
     		puts i
     		i+= 1
     		break if i >= 10
     	end
     end
    
  5. times ์‚ฌ์šฉํ•˜๊ธฐ

    ๋ฐ˜๋ณตํ•  ํšŸ์ˆ˜๋ฅผ ์ •ํ•ด๋‘๋ฉด ํ•ด๋‹น ํšŸ์ˆ˜๋งŒํผ ์ง€์ •ํ•œ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ณ„๋„๋กœ return ํ•˜์ง€ ์•Š์œผ๋ฉด 10์ด ๋ฆฌํ„ด

     def main
     	i = 0
     	10.times do
     		puts i
     		i+=1
     	end
     return nil
     end
    
  6. each ์‚ฌ์šฉํ•˜๊ธฐ each๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด์‹œ, ๋ฐฐ์—ด๋“ฑ์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด์„œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ์ง„ํ–‰ํ•œ๋‹ค. ์ด๋•Œ |animal| ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์€ ๋ฐฐ์—ด์—์„œ ๊ฐ€์ ธ์˜จ ๊ฐ’์„ ์˜๋ฏธํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ์“ฐ์ธ๋‹ค.

     # ๋ฐฐ์—ด
     def main
     	animals = ["dog", "cat", "lion"]
     	animals.each do |animal|
     		puts animal
     	end
     end
        
     # ์ถœ๋ ฅ
     => dog
     => cat
     => lion 
    
     # ํ•ด์‹œ
     def main
     	scores = {"korean"=>100, "math"=>85}
     	scores.each {| key, value | puts "#{key} : #{value}"}
     end
        
     # ์ถœ๋ ฅ
     => korean : 100
     => math : 85
    


๋ฐ˜๋ณต๋ฌธ ์ œ์–ด

break : loop ๋ฌธ์—์„œ ๋ณด์•˜๋“ฏ์ด ํŠน์ • ์กฐ๊ฑด์—์„œ ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜๋Š” ๋ฌธ์žฅ์ด๋‹ค.

next : ํ˜„์žฌ ์กฐ๊ฑด์—์„œ ์‹คํ–‰์€ ์ค‘์ง€ํ•˜์ง€๋งŒ, ์ดํ›„ ๋ฐ˜๋ณต์„ ์ง„ํ–‰ํ•˜๊ฒŒ ํ•˜๋Š” ๋ฌธ์žฅ์ด๋‹ค. break์™€ ๋‹ค๋ฅด๊ฒŒ ํ•ด๋‹น ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.


ํด๋ž˜์Šค, ๋ฉ”์†Œ๋“œ ์„ ์–ธํ•˜๊ธฐ

๋ฉ”์†Œ๋“œ

์–ด๋–ค ๊ฐ’์„ ๋ฆฌํ„ด ํ• ์ง€ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์— ?,!,=๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ด๋‹น ํŠน์ˆ˜๋ฌธ์ž๋Š” ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค. ํŠน์ˆ˜๋ฌธ์ž๋“ค์€ ์‹ค์ œ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€์•Š๊ณ  ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ํ‘œํ˜„์ด๋‹ค. ๋˜ํ•œ ํ˜ธ์ถœ ์‹œ ๋”ฐ๋กœ ๊ด„ํ˜ธ๋ฅผ ์ ์ง€ ์•Š์•„๋„ ์ˆ˜ํ–‰๋œ๋‹ค.

def fuction(var)
	puts var
end

function 1 # ์ถœ๋ ฅ: "1", ์ˆ˜ํ–‰๋จ

fuction? # ture or false๋ฅผ ๋ฐ˜ํ™˜
fuction! # ํ˜ธ์ถœ ํ›„ ๊ฐ’์ด ๋ณ€ํ•œ๋‹ค.
fuction= # ๋‚ด๋ถ€๊ฐ’์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

ํด๋ž˜์Šค

ํด๋ž˜์Šค์—์„œ ์„ ์–ธ๋œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค ๋‚ด์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. Animal ํด๋ž˜์Šค๋„ ์ƒ์œ„ Class์˜ ๊ฐ์ฒด์ด๊ธฐ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•ด์„œ ์Šฌ๋ ‰ ์งˆ๋ฌธ์„ ๋ณด๊ณ  ์ ๊ฒŒ๋˜์—ˆ๋‹ค.

class Animal 
	attr_reader :var1
	@var1 #ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
	def function
		@@var2 # ํด๋ž˜์Šค ๋ณ€์ˆ˜
		@var3 # function ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
	end
	def var1
		return @var1
	end
	...
end
class Cat
	attr_reader :var1
	@var1 = "๋Ÿฌ์‹œ์•ˆ ๋ธ”๋ฃจ"
	def cat
		puts @var1
		puts "cute cat!"
	end
end

def main()
	my_cat = Cat.new
	my_cat.cat
end

var2๋Š” Animal ํด๋ž˜์Šค ๋‚ด๋ถ€ ์–ด๋””์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ, var1์€ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฉ”์†Œ๋“œ ๋“ฑ์—์„œ๋Š” ์ ‘๊ทผ์„ ๋ชปํ•˜๊ณ  ํ•ด๋‹น ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ํด๋ž˜์Šค๋‚˜ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉํ• ๋•Œ ์ง€์ •. ์™ธ๋ถ€์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ์‹ฌ๋ณผ๋กœ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฉ”์†Œ๋“œ๋“ค์€ public ํ•˜์ง€๋งŒ, ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ฐ€๋Šฅํ•˜๋‹ค.

public
	def func1
	...	
	end
private
	def func2
	...
	end
protected
	def func3
	...
	end 
	...	

	def func2
	...
	end

	def func3
	...
	end 

private :func2
protected :func3


์ƒ์†

<๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์†์„ ๋ฐ›์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด is_a ๊ด€๊ณ„๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. is_a ์™ธ์— kind_of๋„ ์žˆ๋Š”๋ฐ, kind_of์™€ is_a ๋Š” ๋ช…์นญ๋งŒ ๋‹ค๋ฅด์ง€ ๊ธฐ๋Šฅ์€ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค.

obj.is_a / kind_of (class) : class๊ฐ€ obj์˜ ํด๋ž˜์Šค์ธ ๊ฒฝ์šฐ, ํ˜น์€ superclass ๊ฑฐ๋‚˜ obj์— ํฌํ•จ๋œ ๊ฒฝ์šฐ true, false ๋ฐ˜ํ™˜

class Cat < Animal:
	def eat
	...
	end
end

Cat.is_a? Animal # true
Cat.superclass # Animal
eat.is_a? Cat # true

์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด์„œ instance_of๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.


์ž๋ฃŒ ๊ตฌ์กฐ

๋ฐฐ์—ด [ Array ]

๋ฐฐ์—ด์€ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— push, pop์„ ํ†ตํ•ด ์Šคํƒ์ฒ˜๋Ÿผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

var = ["A", "B", "C"]
var[1] = "D" # ๋Œ€์ž… ๊ฐ€๋Šฅ

ํ•ด์‹œ [ Hash ]

= > ๋ฅผ ์ด์šฉํ•ด์„œ ํ‚ค์—๋Œ€ํ•œ ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค. ์ดํ›„ ๋Œ€์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

var = {"A"=>1, "B"=>3}
var[A] = 2 # ๋Œ€์ž… ๊ฐ€๋Šฅ


ํ•ด์‹œ ๋” ์‚ดํŽด๋ณด๊ธฐ

ํ•ด์‹œ๋ฅผ ์ด์šฉํ•˜๋‹ค ๋ณด๋ฉด key-value๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, ํ•ด๋‹น ๋‚ด์šฉ์ค‘ ๋ช‡๊ฐ€์ง€๋ฅผ ๊บผ๋‚ด๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ ๋ช‡๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž.

๋จผ์ €, key-value๋ฅผ ๊ฐ๊ฐ ๊ฐ€์ ธ์˜ค๋Š” ์ƒํ™ฉ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

# hash๋ผ๋Š” ๊ฐ’์ด ์žˆ์„ ๋•Œ...
hash = { id: 1 , name: "Sara" }

# 1.each do
hash.each do |key, value| { puts "#{key} - #{value}"}

# 2.each
hash.each { |key, value| puts "#{key} - #{value}"}

# 3.each_pair
hash.each_pair { |key, value| puts "#{key} - #{value}"}

์ด 3๊ฐ€์ง€๋Š” ๋ชจ๋‘ ๊ฐ™์€ key-value ๊ฐ’์„ ๋„์ถœํ•œ๋‹ค. ์ด ์™ธ์— ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

#key ๊ฐ’๋“ค์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ
hash.keys
hash.each_key {|key| โ€œ#{key}โ€}


#value ๊ฐ’๋“ค์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ
hash.each_value {|value| puts โ€œ#{value}โ€}


#๋‹จ์ผ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ:
hash.fetch(key) # key๊ฐ€ ๊ฐ€์ง„ value๋ฅผ ๋ฆฌํ„ด
hash.fetch_values(key, key2) # ๊ฐ ํ‚ค๊ฐ€ ๊ฐ€์ง„ value๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ด


#ํ•ด์‹œ๋ฅผ ๊ฒฐํ•ฉํ•  ๋•Œ
hash.merge(hash2)



Categories:

Updated:

Leave a comment