트랙
/
Ruby
Ruby
/
학습 과정
/
인스턴스 변수
인스

인스턴스 변수 에서 Ruby

7개의 연습 문제

인스턴스 변수 소개

핵심 포인트:

  • 클래스의 .new 메서드가 호출되어 객체 인스턴스를 만들면, 인스턴스의 상태를 초기화하기 위해 모든 인자가 .initialize 메서드에 전달돼요.
  • 인스턴스 변수 이름 앞에는 @가 붙어요.
  • 인스턴스 변수는 명시적으로 설정하기 전까지 기본값이 nil이에요.
  • 인스턴스 변수는 기본적으로 private이고, 게터와 세터로 다뤄야 해요.
class Backpack
  initialize(owner)
    @owner = owner
  end

  def owner
    @owner
  end

  def owner=(new_owner)
    @owner = new_owner
  end
end
  • 끝에 =가 붙은 메서드는 Ruby가 세터로 인식하며, 대입 문법을 편의 문법 형태로 쓸 수 있게 해줘요. 예를 들어 Backpack.new("Sven").owner = "Ayah"처럼요. owner와 = 사이에는 공백이 있지만, 실제 메서드 이름은 owner=라는 점을 눈여겨봐요.
  • 게터와 세터는 attr_reader, attr_writer, attr_accessor 메서드로 만들 수 있어요:
    • attr_reader: 나열된 심볼에 대한 게터를 만들어요
    • attr_writer: 나열된 심볼에 대한 세터를 만들어요
    • attr_accessor: 나열된 심볼에 대한 게터와 세터를 만들어요
class Backpack
  attr_accessor :owner

  initialize(owner)
    @owner = owner
  end
end
  • 인스턴스 변수를 직접 쓰지 않고 게터와 세터를 쓰는 이유는 뭘까요?
    • 앞의 예시에 오타(이런 실수를 "typo"라고 불러요)가 있었다면(예: @ownar), 아무 오류도 없이 조용히 실패해서 시스템에 버그를 끌어들일 수 있어요.
    • 게터와 세터는 이런 문제를 명확히 드러내 주고, 오타가 나면 오류를 발생시켜요.

참고 자료

객체 인스턴스 초기화

인스턴스 변수

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

인스턴스 변수 배우기

연습이 잠겨 있어요

인스턴스 변수 개념을 연습하려면 연습 문제 5개를 더 잠금 해제해요