루비는 모든 것이 객체이므로 함수도 함수라고 하지 않고 메소드라 부른다.
루비는 scope indicator 가 있어서 주의해야할 경우가 있다.
value = "hi"
def output_value
puts value
end
> output_value
# undefined local variable or method for 'value'
루비는 메소드의 매개변수가 없다면 괄호를 생략하고 선언/호출이 가능하다.
def welcome
puts "Hello World"
end
루비 메소드의 매개변수는 괄호 없이 선언/호출이 가능하다. 그러나 괄호를 넣어주는 것을 권장한다. 자바스크립트와 달리 선언시 매개변수의 갯수와 호출시의 매개변수의 수가 같지 않으면 에러가 난다.
def volume (x, y, z)
x * y * z
end
루비 메소드 매개변수에 default 값을 지정해주면 선언시 매개변수의 수가 같이 않아도 괜찮다.
def volume (x, y, z = 1)
x * y * z
end
> volume(2, 6)
루비 메소드는 마지막 라인을 자동으로 리턴한다. 만약 로직 중간에 함수를 리턴해야한다면 return
키워드를 사용해 명시적으로 리턴한다.
def volume (x, y, z)
return "Invalid value" if !x.is_a? Numeric || x < 0
return "Invalid value" if !y.is_a? Numeric || y < 0
return "Invalid value" if !z.is_a? Numeric || z < 0
x * y * z
end