Ruby에서 메서드 사용하기

2020-12-16 hit count image

Ruby에서 메서드(함수)를 사용하는 방법에 대해서 알아봅시다.

개요

메서드(Method) 다른 말로 함수는 프로그램에서 처리해야할 내용을 미리 정의해두고, 필요할 때 호출하여 실행하기 위해서 사용합니다. 이번 블로그 포스트에서는 Ruby에서 메서드를 사용하는 방법에 대해서 알아봅시다.

정의하기

Ruby에서는 아래와 같이 메서드를 정의합니다.

def add(a, b)
  x = a + b
  return x
end

puts add(1, 2)

# 3

return 문

Ruby에서는 마지막 return을 생략할 수 있습니다.

def add(a, b)
  x = a + b
end

puts add(1, 2)

# 3

마지막 return이 생략하면 마지막에 기술된 값이 반환값이 됩니다.

괄호

함수의 매개변수가 없는 경우 아래와 같이 괄호를 생략하는 것이 가능합니다.

def print
  puts 'Hello'
end

print

# Hello

매개변수

매개변수의 기본값

아래와 같이 매개변수의 기본값을 설정할 수 있습니다.

def add(a, b = 2)
  x = a + b
end

puts add(1)

# 3

블록 매개변수

매개변수 앞에 &를 사용하면 매개변수로 블록(처리 모음)을 전달 할 수 있습니다.

def temp(&a)
  a.call
end

temp {
  puts "Hello"
  puts "World"
}

# Hello
# World

매개변수로 전달된 블록을 실행하기 위해서는 call 함수를 사용해야 합니다.

def temp(&a)
  a.call
end

temp do
  puts 'Hello'
  puts 'World'
end

# Hello
# World

가변 길이 매개변수

길이가 변하는 매개변수는 *을 사용하여 전달받을 수 있습니다.

def temp(num, *n)
  puts num
  puts n
end

temp(1, 2, 3)
puts '------------'
temp(1, 2, 3, 4, 5)

# 1
# 2
# 3
# ------------
# 1
# 2
# 3
# 4
# 5

undef 와 defined

undef

Ruby에서는 undef를 사용하여 정의한 메서드를 취소할 수 있습니다.

def temp
  puts 'Hello'
end

temp
undef temp
temp

# Hello
# Traceback (most recent call last):
# temp.rb:9:in `<main>': undefined local variable or method `temp' for main:Object (NameError)

defined

위와 같이 undef로 정의한 메서드를 취소할 수 있습니다. defined를 사용하면 메소드가 존재하는지 여부를 확인할 수 있습니다.

def temp
  puts 'Hello'
end

puts defined? temp
undef temp
puts defined? temp

# method
#

defined를 사용하면 정의된 식의 종류를 나타내는 문자열을 반환합니다.

# super
# method
# yield
# self
# nil
# true
# false
# assignment
# local-variable
# local-variable(in-block)
# global-bariable
# instance-variable
# constant
# class variable
# $&
# $`
# $1
# $2
# expression

완료

이것으로 Ruby에서 메서드를 정의하고 사용하는 방법에 대해서 알아보았습니다. 또한, Ruby에서만의 독특한 문법도 확인하였습니다. 이제 여러분도 Ruby의 메서드를 사용하여 필요한 처리를 정의하고 사용해 보시기 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts