질문과 답변

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 12451
이벤트 작성 RMMV 계속 움직이는 NPC에게 말을 걸려면 어떻게 해야 할까요? 2 pokapoka 2023.12.28 44
플러그인 사용 RMMV HP 와 MP 디자인을 바꾸는법이 있을까요? file 파비아 2023.12.20 44
기본툴 사용법 RMMV 전투중 위에 뜨는 창 삭제하는 방법이 있을까요? 4 file 체리먹는체리 2024.01.18 45
기본툴 사용법 RMVX MP 전부 소진시 상태부여 2 PRESSENTER 2023.01.13 45
이벤트 작성 RMMV 지도 만드는법좀 알려주세요 백월화(白月華) 2023.02.12 45
기타 기타 Android studio에서 sdk tools Zzgame1771 2019.11.04 45
이벤트 작성 RMMV 특정 전투 시작시 메시지를 다르게 하고 싶습니다. 2 땅콩메이커 2023.03.04 45
기본툴 사용법 RMMV 행동 불가능한 스탯에 대해서 PPPL 2020.04.20 45
에러 해결 기타 포샵스타일 적용하기 킬리만자로의눈 2020.09.01 45
기타 RMMV 전투를 시작하면 파티는 혼자인데 2명이 추가되서 나와요. ㅜㅜ 1 자유와바람 2021.03.30 45
에러 해결 RMXP 게임에 글이 안보입니다 3 백진우 2023.10.29 45
이벤트 작성 RMMV 셀프 스위치를 사용하면 이벤트가 실행되지 않습니다 2 file 조각0 2023.08.05 45
에러 해결 RMMV 타이틀 실행오류 1 file 송실용 2023.09.09 45
이벤트 작성 RMMZ 심볼 인카운터 이렇게 만드는 거 아닌가요? 3 file 하라아아암 2023.11.15 46
기타 기타 박살나거나 부숴지는 사운드 없나요? 1 후라이팬샷 2019.01.15 46
스크립트 작성 RMVXA 조건분기 스크립트에서 이벤트의 위치가 해당 위치에 있을때 조건거는법 2 홍홍이1 2023.08.24 46
플러그인 추천 RMMV MV에서 캐릭터 두 명의 동시 전투를 가능하게 하는 플러그인이 있을까요? file chichichi 2023.04.08 46
플러그인 사용 RMMZ 이 플러그인 써보신 분 있나요? 1 file 하라아아암 2023.11.16 46
플러그인 추천 RMMZ 이런 플러그인 어디 있는지 아시나요? 하라아아암 2023.11.01 46
이벤트 작성 RMMV 애니메이션은 기본적으로 플레이어만 사용 가능한가요? 3 pokapoka 2024.01.19 46
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