|
|||
|
|
4. 메소드 호출하기메소드를 호출할 때는 수신자(클래스명 or 인스턴스명)의 이름을 써주고 그 뒤에 메소드의 이름을 쓴다. 그 뒤에 필요한 경우 몇 개의 매개변수(형식인자)를 써준다. 마지막으로 맨 뒤에 블럭이 올 수도 있다.(블럭은 다음 글에서 살펴볼 것이다.)메소드 호출 방법 connection.download_MP3("wonder girls") {|p| show_progress(p)}connection -> 수신자 download_MP3 -> 메소드명 ("wonder girls") -> 매개변수(형식인자) {|p| show_progress(p)} -> 블럭 크래스나 모듈의 메소드를 호출할 때, 수신자 위치에 클래스 이름이나 모듈이름을 적어주면 된다. File.size("test_file.txe")수신자를 생략하면, 기본값은 self가 되고 이는 현재 객체를 나타낸다. # 메소드 호출 -> 결과값 self.class # -> Object self.frozen? # -> false frozen? # -> false self.object_id # -> 978140 object_id # -> 978140위 예제에서 self.class를 호출하는 부분이 있는데 class는 클래스 선언을 의미하는 키워드이기 때문에 class 메소드만은 수신자를 생략하고 사용할 수 없다. 메소드 이름 다음에 선택적으로 매개변수가 오게 되는데 이때 괄호로 묶어줘도 되과 묶지 않아도 된다. # 두 문장은 같다.
a = obj.hash
a = obj.hash()
# 두 문장은 같다.
obj.some_mehtod "arg1", "arg2", "arg3"
obj.some_mehtod ("arg1", "arg2", "arg3")5. 메소드 결과값 반환하기호출된 모든 메소드는 값을 반환한다. 메소드의 반환값은 마지막으로 실행된 표현식의 결과값이거나 return문을 이용한 매개변수의 값이다. 수행중에 빠져나가야 하는 등 특별한 경우가 아니라면 루비에서는 return문을 쓸 필요가 없다.def meth_one
"one"
end
def meth_two(arg)
case
when arg > 0
"positive"
when arg < 0
"negative"
else
"zero"
end
end
# 메소드 실행
puts meth_one
puts meth_two(23)
puts meth_two(-20)
puts meth_two(0)
- 실행결과 - one positive negative zero 6. 배열형태의 반환값 받기def meth_three
100.times do |num|
square = num * num
return num, square if square > 1000
end
end
num, square = meth_three
puts num
puts square- 실행결과 - 32 1024 - return의 매개변수로 여러 개의 값을 동시에 넘기면 배열의 형태로 값을 반환한다. - 배열로 반환된 값을 받기 위해서는 num, square = meth_three 과 같은 병렬대입문을 이용한다. 7. 메소드 호출 시에 배열로 확장하기메소드를 호출할 때 배열을 확장해서 구성 원소가 각각의 형식인수에 대응되도록 할 수 있다. * 를 배열 매개변수 앞쪽에 붙여주면 되고 단, 이런 배열 인수는 일반적인 인수 뒤에 와야만 한다.def five(a, b, c, d, e)
"I was passed #{a} #{b} #{c} #{d} #{e}"
end
puts five(1, 2, 3, 4, 5)
puts five(1, 2, 3, *['a', 'b'])
puts five(*(10..14).to_a)- 실행결과 - I was passed 1 2 3 4 5 I was passed 1 2 3 a b I was passed 10 11 12 13 14 ※ 위 내용은 데이브토머스 차드파울러 앤디헌트 지음, 강문식, 박지인, 양석호 옮김 『Programming Ruby』 책의 내용을 바탕으로 정리한 것입니다. |
||
최근 댓글