1. Ruby 함수와 메서드
Ruby의 함수와 메서드는 코드의 재사용성을 높이고, 특정 작업을 수행하는 데 사용됩니다. 함수와 메서드의 특징은 다음과 같습니다.
- 함수의 특징
- 전역 함수: 루비에서 함수는 기본적으로 전역적으로 사용될 수 있음, 클래스 밖에서 정의된 경우 모든 객체에서 접근이 가능함
- 독립적인 정의: 함수는 클래스와 관계없이 독립적으로 정의. 필요에 따라서 여러 위치에서 호출할 수 있음
- 타임 제한 없음: 루비는 동적 타입 언어이기 때문에 매개변수의 타입을 명시할 필요 X, 다양한 타입의 인자를 받을 수 있음
- 반환 값: 마지막으로 선언된 표현식이 자동으로 반환 return 키워드를 사용하지 않아도 됨
함수를 정의할 때는 def 키워드를 사용해 정의할 수 있습니다. 함수 본문에 반환 값이 필요할 경우 반환합니다.
def add(a,b)
return a + b
end
result = add(5, 3)
puts "합: #{result}" # 출력: 합: 8
2. 메서드 정의
루비에서는 클래스 내부에 메서드를 정의할 수 있습니다. 메서드는 객체의 동작을 정의합니다. 메서드의 특징은 다음과 같습니다.
- 객체 지향적: 메서드는 클래스 내에 정의되며, 특정 객체의 동작을 정의함, 메서드는 객체의 상태를 변경하거나 객체와 상호작욛하는 데 사용
- 인스턴스 메서드와 클래스 메서드: 메서드는 인스턴스 메서드(객체 인스턴스에서 호출)와 클래스 메서드(클래스 자체에서 호출)로 나뉨
- self 키워드: 메서드 내부에서 self를 사용해 현재 객체를 참조할 수 있음, 클래스 메서드의 경우 self는 클래스 자체를 참조함
- 블록 사용: 메서드는 블록을 받아 추가적인 기능을 수행할 수 있음, 블록은 메서드의 인라인 함수처럼 동작
- 오버로딩 없음: 루비는 정적 타입 언어가 아니므로, 메서드 오버로딩을 지원하지 않음, 대신 매게변수의 수나 타입을 체크해 구현할 수 있음
class 클래스이름
def 메서드이름(매개변수1, 매개변수2)
# 메서드 본문
end
end
class Calculator
def add(a,b)
a + b
end
end
calc = Calculator.new
result = calc.add(5, 3)
puts "result: #{result}" # 출력: result: 8
3. 메서드의 반환 값
루비에서는 마지막으로 평가된 표현식이 자동으로 반환되며, return 키워드를 명시하지 않아도 됩니다.
def multiply(a,b)
a * b # 마지막 표현식이 자동 반환
end
puts multiply(5, 5) # 25
4. 기본 매개변수
매서드에 기본 매개변수를 설정할 수 있습니다.
def greet(name = "Guest")
puts "사용자의 이름: #{name}!"
end
greet("James") # result: 사용자의 이름: James!
greet # result: 사용자의 이름: Guest!
5. 가변 인자
가변 인자를 사용해 메서드에 임의의 개수의 인자를 전달할 수 있습니다.
def sum(*numbers)
numbers.reduce(0, :+)
end
puts sum(1,2,3) # result: 6
puts sum(1,3,5,7,9) # result: 25
6. 블록과 메서드
루비에서 메서드에 블록을 전달할 수 있습니다. 블록은 메서드의 인라인 함수처럼 동작합니다.
def repeat(n)
n.times do
yield
end
end
repeat(3) { puts "Hello!" }
# result:
# Hello!
# Hello!
# Hello!
7. 메서드 오버로딩
루비는 정적 타입 언어가 아니므로, 메서드 오버로딩을 지원하지 않지만, 대신 매개변수의 수나 타입을 체크해 구현할 수 있습니다.
def display(value)
if value.is_a?(String)
puts "String(문자열): #{value}"
elsif value.is_a?(Integer)
puts "Integer(정수): #{value}"
end
end
display("Hello, World") # result: String: Hello, World
display(42) # result: Integer: 42
GitHub - set-up-init/ruby-tutorial-tistory: https://thinky.tistory.com/category/Back-End/Ruby
https://thinky.tistory.com/category/Back-End/Ruby. Contribute to set-up-init/ruby-tutorial-tistory development by creating an account on GitHub.
github.com
LIST
'Back-End > Ruby' 카테고리의 다른 글
[Ruby] 6장 모듈과 믹스인 (0) | 2025.03.07 |
---|---|
[Ruby] 5장 클래스와 객체 지향 프로그래밍 (0) | 2025.03.01 |
[Ruby] 3장 Ruby의 제어흐름 (0) | 2025.02.24 |
[Ruby] 2장 Ruby의 기본 문법(변수, 데이터 타입, 연산자) (0) | 2025.02.21 |
[Ruby] 1강 Ruby란 무엇인가? Ruby의 탄생 (0) | 2025.02.15 |