Rails Insights

루비에서 메서드 정의하기

루비는 객체 지향 프로그래밍 언어로, 메서드를 정의하고 사용하는 것이 매우 중요합니다. 메서드는 코드의 재사용성을 높이고, 프로그램의 구조를 명확하게 만들어 줍니다. 이 글에서는 루비에서 메서드를 정의하는 방법에 대해 자세히 알아보겠습니다.

메서드란 무엇인가?

메서드는 특정 작업을 수행하는 코드 블록입니다. 메서드를 사용하면 코드의 중복을 줄이고, 프로그램의 가독성을 높일 수 있습니다. 루비에서는 메서드를 정의하고 호출하는 것이 매우 간단합니다.

메서드 정의하기

루비에서 메서드를 정의하려면 def 키워드를 사용합니다. 메서드의 이름은 소문자로 시작해야 하며, 여러 단어로 이루어진 경우 언더스코어(_)로 구분합니다. 메서드 정의의 기본 구조는 다음과 같습니다:

def 메서드이름(매개변수)
  # 실행할 코드
end

예를 들어, 두 숫자를 더하는 메서드를 정의해 보겠습니다:

def add(a, b)
  a + b
end

위의 예제에서 add라는 메서드는 두 개의 매개변수 ab를 받아서 그 합을 반환합니다.

메서드 호출하기

정의한 메서드는 메서드 이름과 괄호를 사용하여 호출할 수 있습니다. 다음은 add 메서드를 호출하는 예제입니다:

result = add(3, 5)
puts result  # 출력: 8

위의 코드에서 add(3, 5)를 호출하여 3과 5를 더한 결과를 result 변수에 저장하고, 이를 출력합니다.

메서드의 매개변수

메서드는 매개변수를 통해 외부에서 값을 전달받을 수 있습니다. 매개변수는 필수 매개변수와 선택적 매개변수로 나눌 수 있습니다.

필수 매개변수

필수 매개변수는 메서드를 호출할 때 반드시 제공해야 하는 매개변수입니다. 예를 들어:

def greet(name)
  "안녕하세요, #{name}님!"
end

puts greet("홍길동")  # 출력: 안녕하세요, 홍길동님!

선택적 매개변수

선택적 매개변수는 기본값을 설정하여, 호출 시 제공하지 않아도 되는 매개변수입니다. 다음은 선택적 매개변수를 사용하는 예제입니다:

def greet(name, greeting = "안녕하세요")
  "#{greeting}, #{name}님!"
end

puts greet("홍길동")          # 출력: 안녕하세요, 홍길동님!
puts greet("홍길동", "안녕")  # 출력: 안녕, 홍길동님!

가변 인자

루비에서는 가변 인자를 사용하여 메서드에 전달되는 인자의 수를 유동적으로 설정할 수 있습니다. 가변 인자는 매개변수 이름 앞에 *를 붙여서 정의합니다.

def sum(*numbers)
  numbers.reduce(0, :+)
end

puts sum(1, 2, 3)          # 출력: 6
puts sum(1, 2, 3, 4, 5)   # 출력: 15

위의 예제에서 sum 메서드는 전달된 모든 숫자의 합을 계산합니다.

메서드의 반환값

루비에서는 메서드의 마지막 실행 결과가 자동으로 반환됩니다. return 키워드를 사용하여 명시적으로 반환할 수도 있습니다.

def multiply(a, b)
  return a * b
end

puts multiply(4, 5)  # 출력: 20

위의 예제에서 multiply 메서드는 두 숫자의 곱을 반환합니다.

메서드 오버로딩

루비는 메서드 오버로딩을 지원하지 않지만, 선택적 매개변수나 가변 인자를 사용하여 비슷한 기능을 구현할 수 있습니다. 예를 들어:

def display(value, format = :text)
  if format == :text
    puts "텍스트 형식: #{value}"
  elsif format == :json
    puts "JSON 형식: {\"value\": \"#{value}\"}"
  end
end

display("안녕하세요")          # 출력: 텍스트 형식: 안녕하세요
display("안녕하세요", :json)  # 출력: JSON 형식: {"value": "안녕하세요"}

메서드의 접근 제어

루비에서는 메서드의 접근 제어를 통해 메서드의 가시성을 설정할 수 있습니다. 기본적으로 메서드는 public입니다. 다음은 메서드의 접근 제어에 대한 설명입니다:

  • public: 모든 객체에서 호출할 수 있는 메서드입니다. 기본값입니다.
  • protected: 같은 클래스 또는 서브클래스에서만 호출할 수 있는 메서드입니다.
  • private: 같은 클래스 내에서만 호출할 수 있는 메서드입니다.

접근 제어 예제

class Example
  def public_method
    "공개 메서드"
  end

  protected

  def protected_method
    "보호 메서드"
  end

  private

  def private_method
    "비공개 메서드"
  end
end

example = Example.new
puts example.public_method      # 출력: 공개 메서드
# puts example.protected_method  # 오류 발생
# puts example.private_method    # 오류 발생

정리

루비에서 메서드를 정의하고 사용하는 방법에 대해 알아보았습니다. 메서드는 코드의 재사용성을 높이고, 프로그램의 구조를 명확하게 만들어 주는 중요한 요소입니다. 필수 매개변수, 선택적 매개변수, 가변 인자, 접근 제어 등 다양한 기능을 활용하여 메서드를 정의할 수 있습니다. 루비의 메서드를 잘 활용하여 더 효율적이고 가독성 높은 코드를 작성해 보세요!

Published: August 12, 2024

© 2024 RailsInsights. All rights reserved.