Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

자본 엄.슴.

Ruby 함수 본문

Ruby

Ruby 함수

자본없음 2018. 12. 10. 11:21

함수와 인자

함수는 코드를 재사용하기 위해 사용된다. 루비에서 함수를 만들 때는 def 키워드를 사용한다.

def sayName(name = "Kim")
    puts "your name is #{name}"
end

sayName("NoYE")
sayName "NoYE"
sayName

결과

your name is NoYE
your name is NoYE
your name is Kim

함수를 만들었다. name이라는 인자를 받아서 출력하는 아주 간단한. 루비는 함수를 호출할 때 괄호()를 쓰지 않아도 된다. 그런데 sayHello 함수의 인자 부분에 (name = "Kim")은 무엇을 의미할까? 이것은 name의 값으로 아무것도 주지 않으면 기본적으로 "Kim"이라는 값이 들어가게 된다는 의미이다. 기본 인자를 조금 응용하면 다음과 같은 코드도 작성할 수 있다.

def calculate(a, b, c=a+b)
    puts "a + b = #{c}"
end

puts calculate 10, 2

결과

a + b = 12

루비에서는 Extra arguments 라는 것을 사용할 수 있다. 인자 하나에 여러 개의 값이 들어가는 것인데 한국어로 해석하면 '추가 인자' 또는 '나머지 인자' 정도 되려나? 애스테리스크( * )를 사용하면 된다.

def sayName(a, b, *c)
    puts "#{a}, #{b}, and #{c}"
end

sayName "NoYE", "Kim", "Park", "Choi", "Son"

결과

NoYE, Kim, and ["Park", "Choi", "Son"]

반환 값이 조금 이상하다. 마지막 부분이 대괄호로 쌓여 있는데 이것은 c라는 인자에 "Park", "Choi", "Son"이 배열 형태로 들어가기 때문이다. 배열은 나중에 다루어 볼 예정이다.

반환(return)

함수는 값을 반환할 수 있다. 다음 코드는 위의 sayName 코드를 조금 바꿔본 것이다.

def sayName(name = "Kim")
    return "your name is #{name}"
end

puts sayName "NoYE"

결과

your name is NoYE
your name is Kim

함수 내부에서 이름을 출력하는 대신에 return 키워드를 사용해서 문자열을 반환했다. 출력은 함수 외부에서 직접한다.


루비는 값을 반환할 때 return 키워드를 명시적으로 사용하지 않아도 된다. return 키워드를 쓰지 않으면 루비는 가장 마지막 문장을 반환 값으로 취급한다. 그래서 아래와 같은 코드도 정상 실행된다.

def sayName(name = "Kim")
    "your name is #{name}"
end

puts sayName "NoYE"

결과

your name is NoYE
your name is Kim

return 키워드를 제거했지만 아주 잘 작동한다.


루비는 반환 값을 여러 개를 줄 수 있다. 사실 여러 개를 반환하는 건 아니고 반환 값들이 묶인 배열 하나를 리턴한다. 콤마(,)를 사용하면 된다.

def calculate(a, b)
    return a+b, a-b, a*b, a/b
end

puts calculate 10, 2

결과

12
8
20
5

'Ruby' 카테고리의 다른 글

Ruby 싱글톤 메서드  (0) 2019.01.30
Ruby 접근 제어자, 상속  (0) 2018.12.11
Ruby 클래스, 객체  (0) 2018.12.10
Ruby 입력, 출력  (0) 2018.12.09
Visual Studio Code에서 Ruby 사용하기  (0) 2018.12.09
Comments