まず、あなたの内なるArray
constructorコールは、その第二init
パラメータ、あなたはArray
が含まれていること初期要素を作成ラムダが不足しています。
fun <T> array2dim(sizeOuter: Int, sizeInner: Int, element: T): Array<Array<T>>
= Array(sizeOuter) { Array(sizeInner) { element } }
あなたはまた、外側と内側のインデックスを使用し、それらに基づいて初期要素を作成できます:
をあなたは、たとえば、同じ要素でそれをすべて記入したい場合は、パラメータとしてそれを渡すことができます
fun <T> array2dim(sizeOuter: Int,
sizeInner: Int,
createElement: (Int, Int) -> T): Array<Array<T>>
= Array(sizeOuter) { outerIndex ->
Array(sizeInner) { innerIndex ->
createElement(outerIndex, innerIndex)
}
}
あなたはそれを作成するときに、arrayOfNulls
でNULL可能インナーArray
Sを作成することを検討してあなたのArray
を初期化することは何もない場合。
これらは、まだあなたにT
にアクセスできないというエラーが得られます - 説明については、関連する質問へthis answerを参照していますが、としてあなたのT
reified
として(その結果、あなたの関数をマークする必要がありますinline
):
inline fun <reified T> array2dim(sizeOuter: Int, sizeInner: Int, element: T)
: Array<Array<T>>
= Array(sizeOuter) { Array(sizeInner) { element } }