질문과 답변

Extra Form

2차원배열(사실 다차원배열)이 필요한데 루비스크립트로 선언하는 방법과 사용방법좀

알려주세요.

 

 

 

 

 

 

 

 

 

 

■ 질문전 필독!
  • 질문할 내용이 이 게시판이나 강좌에 이미 있는지 확인합니다.
  • 하나의 게시물에는 하나의 질문만 합니다.
  • 제목은 질문의 핵심 내용으로 작성합니다.
  • 질문 내용은 답변자가 쉽게 이해할 수 있도록 최대한 상세하게 작성합니다.
  • 스크립트의 전문이 필요할 경우 txt 파일 등으로 첨부해 주시기 바랍니다.
  • 답변받은 게시물은 삭제하지 않습니다.
  • 답변이 완료된 경우 해당 답변해주신 분들께 감사의 댓글을 달아줍니다.
    • 처음 오신 분들은 공지 게시물을 반드시 읽어주세요!

※ 미준수시 사전경고 없이 게시물을 삭제합니다.

Who's A구몽

profile

닉네임 변경

6º   ->  A구몽

Comment '10'
  • ?
    LuD 2016.04.01 14:18

    루비는 따로 선언이 없습니다.
    변수 = 내용
    이라고 하면 되는거라서 단지 내용이 배열이 되면 되는거죠.
    내용이 된 배열의 각 항목 값을 다시 배열로 하면 다차원 배열이 되겠네요.
    변수 = [[[[내용]]]] 이런식으로 여러번 하면 다차원 배열이 되겠죠;;;

    ary = []
    이렇게 하면 1차원 배열이고 ary[0] 과 같이 접근합니다.

    ary = [[],[],...,[]]
    이런식으로 하면 2차원 배열이 되겠죠.
    ary[0][0] 과 같은 식으로 쓸 수 있습니다.

    배열안에 배열을 얼마나 중첩시켜서 넣느냐에 따라서 2차원 ~ 다차원 배열까지도 사용할 수 있겠네요.

    v1 = [1,2,3]
    v2 = [4,5,6]
    v3 = [7,8,9]
    v4 = [v1, v2, v3] 이렇게 선언해서 v4[1][2] == 6 이 되는것 처럼
    배열이 값인 변수를 배열의 값으로 받아도 다차원 배열이 될 수 있습니다.

    v5 = [v4, [10,11,12], "배열", 0] 그리고 이런식으로 배열의 각 항목이 다른형식이라도 상관없죠;;

     

    v5[0][1][2]  #=>   6

    v5[1][0]     #=>  10

    v5[2]        #=>  "배열"

    v5[3] + 1  #=>   1

  • profile
    A구몽 2016.04.01 14:39
    ar = [[[0]]] 으로 하면 3차원 배열이 생성되고
    ar[2][10][20]가 빈자리이므로 nil을 반환하는건가요? 아니면 아예 에러가 뜨나요?
  • ?
    LuD 2016.04.01 15:20
    그렇게 하면 안타깝게도 에러가 뜨겠네요;
    ar[2] 가 이미 nil 이기 때문에 nil 에서 [10] 이라는걸 찾을수가 없다는 에러일듯 한데..
    직접 해보면 알듯 하지만;;;
  • profile
    A구몽 2016.04.01 14:44
    대충 ar[3][14][7][5] 정도의 크기의 배열을 쓰고싶은데 크기를 지정해놓을 순 없나요?
    직접 대입선언을 하기에는 번거로울 것 같아서요.
  • ?
    LuD 2016.04.01 15:28
    선언을 해줄수도 있습니다.
    ary = Array.new 로 선언을 할 수도 있고
    ary = Array.new(size) 혹은 Array.new(size, value) 식으로 할수도 있어요.
    아무것도 없으면 빈 배열 []
    size가 있으면 size크기의 nil이 채워진 배열이고 value 가 있으면 value값으로 채워진 size 크기의 배열이겠네요.
    아니면 Array.new(size) {|index| index} 식으로 할수도 있죠
    ary = Array.new(5) {|i| i * 2} 라고 하면
    ary #=> [0,2,4,6,8] 이 되겠네요.

    자세한건 도움말(색인)에서 Array 부분 찾아보면 있습니다.

    3, 14, 7, 5 사이즈의 0으로 채워진 배열을 만드려면...;;
    ary = Array.new(3,Array.new(14,Array.new(7,Array.new(5,0)))) 이렇게 하면 되나?;;
  • profile
    A구몽 2016.04.01 16:46
    아 감사합니다. ㅎㅎ
  • profile
    A구몽 2016.04.12 09:39

    ary = Array.new(5, Array.new(5)) 와 같이 2차원 혹은 다차원 배열을 선언하는 것에는 논리적인 오류가 있었습니다.(제작자가 다른 쓰임새 때문에 의도한 것일지도 모르지만.)

    만약 ary[2][0] = 6 을 처리하면, 루비는 ary[0][0] = 6, ary[1][0] = 6, ary[2][0] = 6, ary[3][0] = 6, ary[4][0] = 6 의 처리를 실행합니다.
    따라서 Array.new(5, Array.new(5)) 방식으로 2차원 배열을 선언하면 활용성은 1차원 배열과 같아지며 일반적인 2차원 배열로써 활용 불가능합니다.
    하지만 ary = Array.new(5)
    ary[0] = Array.new(5), ary[1] = Array.new(5) ...(생략)... ary[4] = Array.new(5) 처럼 선언 할 경우에는 일반적인 2차원 배열을 만들 수 있게 됩니다. 이 경우에는 ary[2][0] = 6 을 처리해도 다른 값에 영향이 가지 않습니다.
    따라서 일반적인 다차원 배열은 반복문으로 선언해야하더군요.

    이거 해결하느라 고생좀 했네요.

  • ?
    LuD 2016.04.12 15:58

    아하..그렇구나...
    저같은 경우는 선언의 필요성을 못느껴서 Array.new 라는것도 도움말 보고 알았네요.
    그래서 위에 답변도 되나? 라는 의문형식으로 찝찝하게 끝맺었는데...;;

    그 전에 배열 크기를 꼭 정해놓고 써야 하는건가? 라는 의문이 있지만...
    일단 해결하셨다니 다행이네요^^;

  • ?
    LuD 2016.04.12 16:19
    방금 해봤는데...
    ary = Array.new(3) { Array.new(4) } 이런식으로 Array.new(size) {value} 형식으로 해주면 되네요.
    그렇게 하면 각각의 개체를 가지는 배열이 선언되네요.

    응용하면 고생을 조금 줄일 수 있을것 같습니다.
  • profile
    A구몽 2016.05.09 01:59
    그렇군요. 한동안 접속을 안해서 이제봤네요.
    감사합니다.

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12391
RMVX 263515님 VX아이콘셋이... 2 키레이 2010.12.04 558
기타 2D 격투 게임 만들기2 암호화 해제 툴은 없나요? 1 엿데브 2011.05.02 2357
툴선택 2D 모바게 만들 수 있는 툴이 어떤 것이 있죠? 1 환상벌레 2013.09.08 1214
툴선택 2D 횡스크롤 도트 RPD 게임 제작 툴(프로그램) 무료 추천 [행복한사람] 2018.12.09 427
기타 2D격투만들기 2nd 소스 신기 2012.01.16 1986
RM2k 2k BGM 페이드아웃, 어떻게 하나요? 김오앙 2017.10.29 136
RM2k 2k 시야제한 픽쳐 질문입니다.. 2 file 커스터마이징게임 2014.05.09 996
RMVXA 2k 에서 쓰는 사이드 전투 방식을 vx ace에서 하고싶은데요 4 일류 2012.04.29 2554
RM2k 2k 픽쳐표시 질문. file 루에쿨 2012.03.17 2121
RM2k3 2k3의 전투방식에서 게이지바 충전 속도 버그(?) 2 RAISON 2013.12.08 1478
RM2k 2K시리즈에서도 드래곤 퀘스트처럼 동료 기차놀이가 가능한가요? file 미상 2015.10.11 276
RM2k 2K에는 '이동할때까지대기'가 없나봐요? 4 쉰라면블랙 2012.03.17 2093
RM2k 2K에서 데이터베이스 아이템중에 $ 달린게 뭘까요? 2 루비노바 2011.08.07 1442
플러그인 추천 RMMV 2P를 만들고 싶어요. 4 레기우스州 2020.06.12 176
RMVXA 2가지 버그를 발견했습니다. 2 빙룡군 2012.01.14 3138
플러그인 추천 RMMV 2명의 캐릭터가 말하는 것처럼... 무명시절 2019.08.28 131
2시간째 붙잡고 있는데 한글 패치 적용이 안됩니다ㅠㅜ 설기 2017.01.01 185
RMVXA 2차원 배열 선언 및 사용법좀 알려주세요. 10 A구몽 2016.04.01 269
RMVXA 2회차 3회차 같은거... 1 해지등 2016.10.27 284
RM2k3 2회차 이벤트를 만들 수 있나요? 1 아델르 2013.05.08 1047
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