자본 엄.슴.
Ruby 함수 본문
함수와 인자
함수는 코드를 재사용하기 위해 사용된다. 루비에서 함수를 만들 때는 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 |