Ruby에서의 Method의 기본 규칙
- def keyword이용
- 반드시 소문자로 시작
- 무언가를 묻는 method는 대부분 ´?´로 종결
- 객체의 값을 바꾸거나 위험한 method는 모두 !로 종결
- 대입문에 사용 가능한 method는 =로 종결된다.
- return 값은 마지막으로 실행된 표현식의 결과값이거나 명시적으로 쓰인 return값의 결과가 얻어진다.
가변 인자 리스트
: python과 비슷하게 가변 인자가 들어가는 경우에는 *로 가변 형식 인수를 구분할 수 있다.
def varargs(arg1, *rest)"Got #{arg1} and #{rest.join(' ,')}"
end
Method와 Block
Method내부에서는 yield를 이용해서 block의 코드를 호출 할 수 있다.
Method 선언부에서 형식인수에 &가 붙은 경우에는 형식 인수에 block이 Proc 함수로 대응되어 들어가게 된다.
class TaxCalculator def initialize(name, &block) @name, @block = name, block end def get_tax(amount) "#{amount}원에 대한 #{@name} = #{ @block.call(amount) }" end end
Method의 호출
print "(t)imes or (p)lus : " times = gets print "number" number = Integer(gets) if times =~ /^t/ calc = lamda { |n| * number } else calc = lamda { |n| + number } end puts( (1..10).collect(&calc).join(", ") )
Python에서와 동일하게 Hash Table을 이용한 함수의 선언도 역시 사용가능하다.
list.create_search("short jazz songs", { 'genre' => "jazz", 'duration_less_than' => 270 }