프로그램

프로그램은 타입, 메서드, 파일 단위의 지역 변수가 선언되는 전역 객체입니다.

# 프로그램에 메서드 선언
def add(x, y)
  x + y
end

# 프로그램의 add 메서드 호출
add(1, 2) #=> 3

메서드의 값은 마지막 표현식의 값과 같습니다. 따라서 return은 필요하지 않지만, 명시할 수는 있습니다.

def even?(num)
  if num % 2 == 0
    return true
  end

  return false
end

add(1, 2)처럼 리시버 없이 메서드를 호출했을 때, 현재 타입이나 상위 타입에서 그 메서드를 찾지 못했다면 프로그램에서 해당 메서드를 찾습니다.

def add(x, y)
  x + y
end

class Foo
  def bar
    # 프로그램의 add 메서드 호출
    add(1, 2)

    # Foo의 baz 메서드 호출
    baz(1, 2)
  end

  def baz(x, y)
    x * y
  end
end

현재 타입에서 같은 이름을 갖는 메서드를 정의하고 있더라도 프로그램의 메서드를 호출하고 싶은 경우라면 호출 앞에 ::를 붙입니다.

def baz(x, y)
  x + y
end

class Foo
  def bar
    baz(4, 2) #=> 2
    ::baz(4, 2) #=> 6
  end

  def baz(x, y)
    x - y
  end
end

프로그램에 선언된 변수는 메서드 안에서는 사용할 수 없습니다.

x = 1

def add(y)
  x + y # 오류: 지역 변수 또는 메서드 'x'는 정의되지 않음
end

add(2)

메서드 호출에서 괄호를 생략할 수도 있습니다.

add 1, 2 # add(1, 2)와 동일

메인 코드

프로그램을 컴파일하고 실행할 때 실행되는 메인 코드는, 별도의 "메인" 메서드 없이 소스 파일에 바로 쓸 수 있습니다.

# "안녕 크리스탈!"을 출력하는 프로그램
puts "안녕 크리스탈!"

메인 코드는 타입 선언 안에도 올 수 있습니다.

# "Hello"를 출력하는 프로그램
class Hello
  # 이 때 'self'는 Hello 클래스
  puts self
end

results matching ""

    No results matching ""