- RubyLanguage
- RubyLanguage/Class
- RubyLanguage/Container
- RubyLanguage/ExceptionHandling
- RubyLanguage/InputOutput
1.1. μ°μ°μ μ°μ μμ ¶
- μ°μ μμκ° λμ κ²μ΄ μ
- μλμ μλ μ°μ°μλ method λ‘ μ μλμ΄ μμΌλ©° μ¬μ μκ° κ°λ₯νλ€.
μ°μ°μ | μ€λͺ |
[] []= | μμ μ°Έμ‘°, μμ μ€μ |
** | λμΉ (2**3 = 8) |
! ~ + - | λ¨νμ°μ°μ (μλ Όλ¦¬, bit NOT, unary plus, unary minus) |
* / & | κ³±μ , λλμ , λλ¨Έμ§ |
>> << | shift |
& | bit AND |
^ | | bit XOR, bit OR |
<= < > >= | λΉκ΅ μ°μ°μ |
<=> == === != | λλ± λΉκ΅ |
- method λ‘ μ μλμ§ μμ μ°μ°μ
=~ !~ | ν¨ν΄ λ§€μΉ |
&& | λ Όλ¦¬κ³± |
|| | λ Όλ¦¬ν© |
.. ... | λ²μ |
? : | μΌν μ°μ°μ |
= %= ~= /= -= += |= &= >>= <<= *= &&= ||= **= | λμ μ°μ°μ |
defined | μ¬λ²μ΄ μ μλμλμ§ κ²μ¬ |
Not | μλ Όλ¦¬ |
or and | λ Όλ¦¬ κ΅¬μ± |
if unless while until | ννμ μ νμ |
begin end | λΈλ‘ ννμ |
- '++' '--" μ°μ°μλ μ‘΄μ¬νμ§ μμ
1.2. μ°μ°μ μ¬μ μ ¶
- μ«μ '+' μ°μ°μλ₯Ό κ³±μ
κΈ°λ₯μ νλ κ²μΌλ‘ λ°κΏλ²λ¦¬κΈ°
class Fixnum def +(other) return self * other end end
- + μ°μ°μλ λ΄λΆμ μΌλ‘λ μμ£Ό μ°μ΄κΈ° λλ¬Έμ, λ°κΏλ²λ¦¬λ κ²½μ° μΈν°ν리ν°κ° λ§μ΄ κ° μ μμ
2. λμ λ¬Έ ¶
- νκΊΌλ²μ λ³μ μ¬λ¬κ° λμ
νκΈ°
a, b = 1, 2 # a -> 1, b -> 2
- swap ꡬν
a, b = b, a
- μ’λ³κ°κ³Ό μ°λ³κ° κ°μκ° λ€λ₯Έ κ²½μ°
- μ’λ³κ°μ΄ νλλΌλ©΄, κ·Έ κ°μ μ°λ³κ°μ΄ λͺ¨λ λ€μ΄κ° λ°°μ΄μ΄ λλ€.
- μ’λ³κ°μ΄ λ μ΄μμ΄λΌλ©΄, μ°λ³κ°κ³Ό λμλμ§ λͺ»ν μ’λ³κ°μ nil(μλ κ°)μ΄ λλ€.
- μ’λ³κ°μ 맨 λ§μ§λ§ λ³μ μμ *μ λΆμ΄λ©΄ λ¨μ μ°λ³κ°μ΄ λ°°μ΄λ‘ λ€μ΄κ°λ€.
- μ’λ³κ°μ΄ νλλΌλ©΄, κ·Έ κ°μ μ°λ³κ°μ΄ λͺ¨λ λ€μ΄κ° λ°°μ΄μ΄ λλ€.
a, b = 1, 2, 3 # a -> 1, b -> 2 a, b, c = 1, 2 # a -> 1, b -> 2, c -> nil a = 1, 2, 3 # a -> [1, 2, 3] (array) a, *b = 1, 2, 3 # a -> 1, b -> [2, 3] (array)
3.1. 쑰건 μ°μ°μ ¶
- and (=> &&), or (=> ||), not (!οΏΌ)
- κΈ°νΈλ‘ μ°μΈ κ²(&&, ||, !)μ΄ λ¨μ΄λ‘ μ°μΈ κ²(and, or, not)λ³΄λ€ μ°μ μμκ° λμ
- κΈ°νΈλ‘ μ°μΈ κ²(&&, ||, !)μ΄ λ¨μ΄λ‘ μ°μΈ κ²(and, or, not)λ³΄λ€ μ°μ μμκ° λμ
- defined? μ°μ°μ: λ§€κ°λ³μκ° μ μλ κ²½μ° κ·Έμ λν μ€λͺ
μ λ¬Έμμ΄λ‘ λ°ννκ³ , μ μλμ§ μμ κ²½μ° nilμ λ°ν
defined? 1 -> "expression" defined? dummy -> nil defined? printf -> "method" defined? $_ -> "global variable" defined? a = 1 -> "assignment"
3.2. λΉκ΅ μ°μ°μ ¶
- ==: λ κ°μ΄ κ°μμ§ λΉκ΅
- ===: case νλͺ©μ whenμ΄ λΉκ΅ν λμκ³Ό λμΌνμ§ λΉκ΅
- <=>: μΌμͺ½ < μ€λ₯Έμͺ½: -1, μΌμͺ½ = μ€λ₯Έμͺ½: 0, μΌμͺ½ > μ€λ₯Έμͺ½: 1
- <, <=, >=, >: μΌλ°μ μΈ λΉκ΅ μ°μ°μ
- =~: μ κ·ννμ ν¨ν΄μ΄ λ§€μΉλλμ§ κ²μ¬
- eql?: μλ‘ κ°μ κ°μ κ°μ§κ³ νμ
λ κ°μμΌ true
- equal?: κ°μ object IDλ₯Ό κ°μ§κ³ μμΌλ©΄ true
3.3. if ¶
- ifλ κ΅¬λ¬Έμ΄ μλλΌ ννμ (μ€νλ λΆλΆμ λ§μ§λ§ μμ κ°μ λ°νκ°μΌλ‘ κ°μ§)
if song.artist == "Gillespie" then handle = "Dizzy" elsif song.artist == "Parker" then handle = "Bird else handle = "unknown" end
- μ€νλλ λ¬Έμ₯μ μ€μ΄ λΆλ¦¬λμ΄ μμΌλ©΄ then μλ΅ κ°λ₯
- thenμ μ½λ‘ (:)μΌλ‘ λ체 κ°λ₯
- unless: ifμ λΆμ ν. if notμΌλ‘ λ체 κ°λ₯
- μμμλ‘ μ¬μ©: μ‘°κ±΄μ΄ μ°ΈμΌ λλ§ μμ μν
print if a == 10
3.4. case ¶
- caseλ κ΅¬λ¬Έμ΄ μλλΌ ννμ (μ€νλ λΆλΆμ λ§μ§λ§ μμ κ°μ λ°νκ°μΌλ‘ κ°μ§)
kind = case year when 1850..1889 then "Blues" when 1890..1909 then "Ragtime" when 1910..1929 then "New Orleans Jazz" when 1930..1939 then "Swing" when 1940..1950 then "Bebop" else "Jazz" end
leap = case when year % 400 == 0 then true when year % 100 == 0 then false else year % 4 == 0 end
- λ³λμ break λ¬Έμ νμ μμ
4.1. while ¶
- whileμ ννμμΌλ‘ nilμ λ°ν
a = b = 0 while a <= 10 b += a end # b -> 55
- whileλ μμμλ‘ μΈ μ μμ: μμλ μμ μ£Όμ΄μ§ μ‘°κ±΄μ΄ μ°ΈμΈ λμ λ°λ³΅
a = 0 print a += 1 while a < 10
4.3. for ¶
- λ°°μ΄μ΄λ λ²μμ μμλ₯Ό νλμ© μ€ν (λ€λ₯Έ μΈμ΄μ foreach)
- μμλ‘ μ°μΈ λ°°μ΄μ΄λ λ²μλ₯Ό λ°ν
for i in 1..10 do print i end
- μ μ½λλ λ΄λΆμ μΌλ‘ μλ μ½λλ‘ λ³νν¨
(1..10).each do |i| print i end
4.4.2. times ¶
- Integer classμ method. Integerκ° λνλ΄λ νμλ§νΌ λ°λ³΅
5.times {puts "hello"}
- timesλ 0λΆν° μμνλ λ΄λΆ μΉ΄μ΄ν°λ₯Ό λκ³ μμ
5.times {|i| puts i}
4.4.3. upto, downto ¶
- νΉμ μμΉμμ μμν΄μ 1μ© μ¦κ°/κ°μ νμ¬ μ ν΄μ§ μ«μκΉμ§(μ ν΄μ§ μ«μ ν¬ν¨)
5.downto(1) do |i| puts i end
4.5. νμΆ κ΅¬λ¬Έ ¶
- break: λ°λ³΅ ꡬ쑰λ₯Ό λΉ μ Έλκ°
- next: νμ¬μ λ¨μ λ°λ³΅ ꡬ쑰λ₯Ό ν¨μ€νκ³ λ€μ λ°λ³΅μ μνν¨
- redo: νμ¬μ λ¨μ λ°λ³΅ ꡬ쑰λ₯Ό λ€μ μνν¨ (쑰건μ κ²μ¬νμ§ μμ)
- retry: 맨 μ²μλΆν° λ°λ³΅μ λ€μ μμν¨
- νμΆ κ΅¬λ¬Έμ if μμμλ₯Ό μ¬μ©νλ κ²μ΄ κ°νΈν¨
even = 0 multiple10 = 0 100.times do |i| next if i%2 != 0 even += 1 next if i%10 != 0 multiple10 += 1 end # even -> 50, multiple10 -> 10