질문과 답변

Extra Form



루비 언어를 공부하고 있는데요, 이 책에는 제가 궁금한게 안 나와 있더라고요.


예를 들어


def create_background
    @sprite1 = Sprite.new
    @sprite1.bitmap = Cache.title1( $data_system.title1_name )


여기서 @ ←이건 무엇을 뜻하는 건가요? 많이 쓰이던데





Comment '5'
  • ?
    스리아씨 2014.01.03 10:37

    뭐 호출할때 사용하는거 아닌가여
    이벤트로 스크립트를 이용해 메뉴같은거 불러올때 @game 어쩌구로 불러오는거보면..

  • ?
    AltusZeon 2014.01.03 11:56

    인스턴스 변수를 의미하는 겁니다.

    지역 변수는 소문자(또는 _)로 시작하고
    전역 변수는 $로 시작하고
    인스턴스 변수는 @로 시작하고
    클래스 변수는 @@로 시작하고
    상수는 대문자로 시작합니다.

  • profile
    Omegaroid 2014.01.03 15:18
    인스턴스 변수이고요. 간단히 예를 들어볼께요.
    #=====================================================
    class TestTest
    attr_accessor :variable1

    def initialize #클래스 생성 시 작동
    @variable1 = 11 #인스턴스 변수
    $variable2 = 22 #글로벌 변수
    end
    end

    a = TestTest.new

    print(@variable1)
    print($variable2)
    print(a.variable1)
    #=====================================================
    #결과값
    # nil / 22 / 11
    #=====================================================
    여기서 @variable1은 인스턴스 변수이고, $variable2 는 글로벌 변수입니다. 글로벌 변수는 어느 곳에서나 참조할 수 있는 강력한 변수이고, 인스턴스 변수는 그냥 쓰면 특정 범위(주로 클래스 내부)에서만 참조할 수 있는 변수라고 보시면 되겠습니다.

    따라서 print(@variable1)라는 명령을 실행했을때 현 상황에서 클래스 외부에서 명령을 실행해서 인스턴스 변수를 참조하는건 불가능하므로 nil이라는 결과값이 나옵니다. 반면 print($variable2)라는 명령에서는 어디서나 참조하는 글로벌 변수를 나타내므로 22라는 결과값이 제대로 나옵니다.

    클래스 내부에 있는 인스턴스 변수를 클래스 외부에서 참조하는 방법은 이렇습니다. TestTest 클래스 맨 처음에 보시면 attr_accessor :variable1 라는 구문이 있는데, 이것을 추가해줌으로써 해당 인스턴수 변수의 값을 클래스 외부에서 읽거나 새로 쓰거나 할 수 있습니다. 그래서 print(a.variable1)라는 명령에서는 11이라는 값이 제대로 나오는 것이고요.

    attr_reader와 attr_writer도 있는데, 각각 읽기만 가능하게 하거나 새로 쓰기만 가능하게 하거나 하는 것들입니다.

    이런 차이점이 있습니다.
  • ?
    비첼 2014.01.04 11:03
    으아니 세상에 모두들 이렇게 친절히 답해주시다니 몸둘 바를 모르겠습니다ㅠㅠㅠㅠㅠㅠ
    안그래도 $ 표시도 몰라서 질문하려 했는데 정말 감사합니다.
  • ?

    추가답변


    클래스 변수에 대한 설명을 덧붙입니다.

    클래스 변수는 인스턴스 변수와는 다르게 모든 인스턴스가 같은 값을 공유합니다.

    아래의 예제에서 @name은 인스턴스 변수, @@the_number_of_people은 클래스 변수입니다.

    제일 아랫줄의 rgss_stop 은 프로그램을 정지하는 RGSS의 독자적인 명령어이니 무시하셔도 됩니다.


    Cap 2014-01-04 11-42-38-300.pngCap 2014-01-04 11-43-12-885.png


    클래스 변수의 참조는 위보다 아래의 방법을 많이 사용합니다.

    수정된 행 : 14행, 30~31행


    Cap 2014-01-04 11-51-24-997.pngCap 2014-01-04 11-51-38-716.png


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12449
기타 !! 자료실의 게임 소재들이 안 보여요 !! 라스민트 2010.11.14 1547
RMVXA "그림의 이동"에 걸리는 시간을 변수로 대체할 수 있을까요? 3 file Roam 2012.11.26 1069
RMXP "마녀의 집" 게임 첫부분 처럼 화면 맵 이동하는 방법 2 허곰탱 2014.02.20 1327
RMVXA "메뉴>상태>캐릭터선택>상태창"에서 캐릭터 선택을 없애기 2 Refus 2015.06.18 317
게임찾기 "보코의 농장"이란 게임 갖고있는분 찾습니다 2 A.미스릴 2013.04.27 2223
RMXP "주인공과 어떤 이벤트와 눈이 마주쳤을 때" 라는 조건분기 어떻게 만드나요? 1 CJYG* 2011.06.29 1589
RMVXA "피격당할때" 조건문을 넣기 머그빵 2016.01.07 135
RMVXA #추격 #추적 #사망 #게임오버 에 대해서 가르쳐주세요 5 신이다1 2018.05.13 277
RMMV $gameScreen.showPicture 쓸려하는데 어떻게 써야하나요. 4 게임잘날아가는닝겐 2016.01.15 224
RMVX $game_party.item_number로 아이템 숫자가 호출이 안 되는데 뭐가 문제일까요? 1 MMM 2014.07.07 751
RMVXA $game_variables은 뭔가요? 스크립트에 적는거인건 아는데... 1 알만툴초보입니당 2017.03.02 100
RMVX $scene = Scene_ATB.new 이게 안됩니다 2 file 욕쟁이스님 2012.11.04 931
이벤트 작성 RMMV '데미지의 처리' 구현법이 있나요? 아무개 2021.03.26 43
플러그인 추천 RMMV "버튼 액션"?에 관한 질문입니다! 2 소랭소랭 2021.03.20 144
플러그인 사용 RMMV "특정이름을 입력했을 때 이벤트 발생하기" 질문입니다! 2 소랭소랭 2021.01.26 149
RMMV "파티원"의 옷을 갈아입히면 케릭터칩을 그 옷을 입은 칩으로 바뀌게 하고싶습니다. 4 만죠메군 2017.07.09 496
플러그인 추천 RMMV "히어로즈 오브 마이트 앤 매직"같은 형식으로 전투를 할수있게해주는 플로그인이 있을까요? file 희희낙낙 2019.10.06 80
RMVXA '(번역) 선택지에서 \를 사용시 공백발생현상 해결' 스크립트를 찾습니다. 3 카로 2012.12.20 877
RMVXA 'A값이 B값보다 클 경우'를 스크립트로 어떻게 표현하죠? 2 게임잘날아가는닝겐 2015.09.19 169
RMVX 'rpg 쯔꾸르 vx'에서 한국 노래가 bgm으로 써지지 않습니다. 2 마런마 2014.01.14 1330
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 516 Next
/ 516