마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

코틀린 2차원 객체배열 질문입니다

0 추천

제가 Canvas로 화면에 3X3 의 서로다른 그림을 그리고 그 9개의 그림중 터치한 그림을 다르게 표시하는 앱을 만들려고 했는데(대충 퍼즐 만드는 겁니다.)

		mBitmapCube 		= new Bitmap[3][];
		mCubeRect 			= new   Rect[3][];
		mCubeOriginRect 	= new   Rect[3][];
		mGameTable 		= new    int[3][];

자바에서 저렇게 2차원배열로 쓰던 코드를  코틀린에서 구현하려고 해보니

int는 

        mGameTable = Array<Array<Int>>(3,{Array<Int>(3,{0})})

이렇게 하면 되는데 Rect 랑 Bitmap 처럼 다른 객체들은 애매 하더군요 

이런 경우 어떻게 구현하는게 좋을까요?

 

OneByteSir (180 포인트) 님이 2020년 12월 3일 질문

1개의 답변

0 추천

Int는  IntArray타입이 미리 준비되어 있으니 그걸 쓰시면 좀 더 편하실 수 있구요. 일반적으로 배열초기화는 arrayOf()를 사용할 수 있습니다.

typealias BitmapArray = Array<Bitmap>
typealias RectArray = Array<Rect>

mBitmapCube = arrayOf<BitmapArray>()
mCubeRect = arrayOf<RectArray>()
mCubeOriginRect = arrayOf<RectArray>()
mGameTable = Array<IntArray>(3, { intArrayOf() })

typealias는 타입에 대한 별칭입니다. 별칭을 주면 코드를 보기가 쉬워질 수 있기 때문에 지원하는 기능입니다. 컴파일되면 원래 타입의 이름으로 바꾸어줍니다.

만약 size 를 지정해야 한다면 생성자에 size와 초기화 블록을  넘겨주시면 됩니다.

mBitmapCube = Array<BitmapArray>(3, {Bitmap()})

 

spark (227,470 포인트) 님이 2020년 12월 3일 답변
...