[Ruby] ๊ธฐ์ด ๋ฌธ๋ฒ
๐ย ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ ์์
๋ฃจ๋น๋ ์ปดํ์ผ ๋ฐฉ์์ด ์๋ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ด๋ค. ํ์ด์ฌ์ด๋ ๋น์ทํด์ ์ข๋คโฆ
-
๊ฐ๋จ ์๋ช ๊ท์น๊ณผ ๋ธ๋ก
๋๋ถ๋ถ ์ค๋ค์ดํฌ ํ๊ธฐ๋ฒ์ ๋ฐ๋ฅด๊ณ ํด๋์ค๋ ํ์ค์นผ ์ผ์ด์ค๋ฅผ ๋ฐ๋ฅธ๋ค.
๋ธ๋ก์ ๊ฒฝ์ฐ {}์ 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๊น์ง ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฐ๋จํ ์ฝ๋๋ฅผ ์ง ๋ค๊ณ ์๊ฐํด๋ณด์ ์ฐ๋ฆฌ๋ ๋ค์ํ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ ์ด๋ฅผ ์ํํ ์ ์๋ค.
-
for ์ด์ฉํ๊ธฐ
์ฆ๊ฐ์ ๋์ ๋ฒ์์ ํด๋นํ๋ ๊ฐ์ ์ํํ๋ ๋ฐ๋ณต๋ฌธ์ ๋๋ค. ์๋ ์ฝ๋ ์์ฑ์ ๋ณ๋์ return์ด ์์ผ๋ฉด return 0..9๋ฅผ ํ๊ฒ ๋๋ค. ๋ค๋ฅธ ์ฝ๋๋ค์ return nil.
def main for num in 0..9 puts num end end
-
while ์ด์ฉํ๊ธฐ
def main i = 0 while i < 10 do puts i i += 1 end end
-
until ์ด์ฉํ๊ธฐ
until์ ์กฐ๊ฑด๋ฌธ์ด false์ผ๋ ์ํ๋๋ ๋ฐ๋ณต๋ฌธ์ด๋ค.
# i!=10 ๋ผ๋ฉด ์ํ def main i = 0 until i == 10 do puts i i += 1 end end
-
loop ์ด์ฉํ๊ธฐ(break๊ฐ ์๋ค๋ฉด ๋ฌดํ ๋ฃจํ)
def main i = 0 loop do puts i i+= 1 break if i >= 10 end end
-
times ์ฌ์ฉํ๊ธฐ
๋ฐ๋ณตํ ํ์๋ฅผ ์ ํด๋๋ฉด ํด๋น ํ์๋งํผ ์ง์ ํ ์ฝ๋๋ฅผ ์ํํ๋ค. ๋ณ๋๋ก return ํ์ง ์์ผ๋ฉด 10์ด ๋ฆฌํด
def main i = 0 10.times do puts i i+=1 end return nil end
-
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)
Leave a comment