질문과 답변

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 49614
RMVXA 게임 BGM이 안들려요.. 버섯수프 2016.04.05 102
RMMV MV 타일칩을 좀더 크게 만들수는 없나요? file Luckypup1 2016.04.04 171
RMVXA 잃은 능력치에 비례해서 데미지 증가하는법 (데미지 공식) 4 테오드라 2016.04.04 230
RMVXA 몬스터마다 특정한 순서대로 스킬.. 2 JobSangIn 2016.04.03 152
RMVXA 이 스크립트 적용에 대해서 질문이요 AccelHacker 2016.04.03 106
기타 미디파일의 자체음량을 조절하는 방법은 없습니까? 3 미상 2016.04.03 357
RMVXA n번 눌러야 실행되는 이벤트 5 그런가 2016.04.03 155
RMVXA 동영상 재생 문제 2 file 엘드로드 2016.04.03 407
RMVXA 맵배치에대해 질문드립니다. 5 file 프리마리모 2016.04.02 222
기타 게임만드는xp다운받는곳 주소 ㄱㄱ 3 file BJ로딩TV 2016.04.02 339
RMVXA 애니메이션 대상숨기기에 관하여 1 file 기폭 2016.04.01 162
RMVXA 2차원 배열 선언 및 사용법좀 알려주세요. 10 A구몽 2016.04.01 324
RMVXA 전투시 적과 아군에게 걸수있는 버프수가 얼마나 되죠? 1 마차군 2016.04.01 157
RMVX 사진 스크립트 질문이요 1 겜웅이 2016.03.31 139
RMVXA 아이템 타입에 접근하는 스크립트가 무엇인가요? 11 프리마리모 2016.03.31 204
RMVXA 스크립트 질문 2개 있습니다. 1 발로르 2016.03.30 131
RMVX 사용하기 쉬운 액알좀 알려주세요 ㅠㅠ 1 게임을만들자! 2016.03.29 290
RMVXA 대화창 투명도에 대한 질문. 1 프리마리모 2016.03.29 335
사이트 이용 추천 기대작 투표기간이 언제 까지 인가요?? 1 드래곤규 2016.03.29 212
RMVXA 이벤트 에서 사용하는 변수를 스크립트에서 사용할 수 는 없나요? 4 프리마리모 2016.03.28 152
Board Pagination Prev 1 ... 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 ... 518 Next
/ 518