개요
메서드(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의 메서드를 사용하여 필요한 처리를 정의하고 사용해 보시기 바랍니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
책 홍보
저도 블로그를 시작한지 1년만에...책을 다 써봅니다...인생에서 이런 날도 오는군요...타국에서 책 출판도 할 수 있고, 참 좋은 세상입니다.
이번에 쓴 책은
아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.
이번에 쓴 책은
스무디 한 잔 마시며 끝내는 React Native
입니다. 다양한 예제를 통해 리액트 네이티브를 공부할 수 있도록 구성해 보았습니다. 또한 설치부터 배포까지 실전에서도 사용할 수 있는 내용들을 담고 있습니다.아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.