Kotlin에서 지정된 크기의 2 차원 Int
배열을 선언하는 가장 쉬운 방법은 무엇입니까?Kotlin의 2 차원 Int 배열
val board = Array(n, { IntArray(n) })
Kotlin에서 지정된 크기의 2 차원 Int
배열을 선언하는 가장 쉬운 방법은 무엇입니까?Kotlin의 2 차원 Int 배열
val board = Array(n, { IntArray(n) })
2 차원 배열을 만들 수있는 새로운 최상위 기능에 대한 소스 코드입니다 적절한 기능을 표준 라이브러리를 확장합니다. Kotlin이 뭔가를 잃어 버렸을 때 그것을 확장하십시오. 그런 다음 제안하고 상태를 추적하려는 것에 대해 YouTrack issues을 추가하십시오. 이 경우에는 위의 내용보다 훨씬 짧지는 않지만 적어도 어떤 일이 일어나는지에 대해보다 명확한 이름을 제공합니다.
public inline fun <reified INNER> array2d(sizeOuter: Int, sizeInner: Int, noinline innerInit: (Int)->INNER): Array<Array<INNER>>
= Array(sizeOuter) { Array<INNER>(sizeInner, innerInit) }
public fun array2dOfInt(sizeOuter: Int, sizeInner: Int): Array<IntArray>
= Array(sizeOuter) { IntArray(sizeInner) }
public fun array2dOfLong(sizeOuter: Int, sizeInner: Int): Array<LongArray>
= Array(sizeOuter) { LongArray(sizeInner) }
public fun array2dOfByte(sizeOuter: Int, sizeInner: Int): Array<ByteArray>
= Array(sizeOuter) { ByteArray(sizeInner) }
public fun array2dOfChar(sizeOuter: Int, sizeInner: Int): Array<CharArray>
= Array(sizeOuter) { CharArray(sizeInner) }
public fun array2dOfBoolean(sizeOuter: Int, sizeInner: Int): Array<BooleanArray>
= Array(sizeOuter) { BooleanArray(sizeInner) }
그리고 사용 :
public fun foo() {
val someArray = array2d<String?>(100, 10) { null }
val intArray = array2dOfInt(100, 200)
}
은 예, 주어진 코드는 2 차원 배열을 선언 할 수있는 가장 쉬운 방법입니다.
다음은 2D 배열 초기화 & 인쇄의 예입니다.
fun main(args : Array<String>) {
var num = 100
// Array Initialization
var twoDArray = Array(4, {IntArray(3)})
for(i in 0..twoDArray.size - 1) {
var rowArray = IntArray(3)
for(j in 0..rowArray.size - 1) {
rowArray[j] = num++
}
twoDArray[i] = rowArray
}
// Array Value Printing
for(row in twoDArray) {
for(j in row) {
print(j)
print(" ")
}
println("")
}
}
문서 링크를 줄 수 있습니까? 나는 어떤 참고 문헌이나 솔기의 아이디어 코 틀린 플러그가 그것을 해결하지 못하는 것을 발견 할 수 있습니다. –
함수와 그 소스 코드는 내 대답 @ Micheled'Amico에 있습니다 ... 그들은 stdlib의 일부가 아닙니다. –
죄송합니다. 나는 당신의 대답을 이끌어 낼 때 너무 게으른 분이었습니다. ....하지만 그것을 시도하고 제네릭 버전이 작동하지 않습니다. 이음새도 정확하고 런타임에'Array (Array)'를 반환해야합니다. java.lang.ClassCastException : [[Ljava.lang.Object; [[Something;] 예외로 캐스팅 될 수 없습니다. 또한 IMHO는 더 나은 시그니처는'array2d (sizeOuter : int, sizeInner : Int, init : (Int, Int) -> INNER)'일 수 있습니다. 나는 당신의 함수 정의가 잘못된 것을 이해하기 위해 질문을 제기 할 것이다. –