当前位置:  开发笔记 > Android > 正文

Kotlin中的2D阵列

如何解决《Kotlin中的2D阵列》经验,为你挑选了3个好方法。

你如何在Kotlin中制作2D Int数组?我正在尝试将此代码转换为Kotlin:

    int[][] states = new int[][] {
        new int[]{-android.R.attr.state_pressed}, // not pressed
        new int[] { android.R.attr.state_pressed}  // pressed
    };
    int[] colors = new int[] {
        foregroundColor,
        accentColor,
        accentColor
    };
    ColorStateList myList = new ColorStateList(states, colors);

这是我尝试过的一次尝试,其中第一个2D阵列不起作用,但我让1D阵列工作:

    //This doesn't work:
    var states: IntArray = intArrayOf(
        intArrayOf(-android.R.attr.state_pressed), // not pressed
        intArrayOf(android.R.attr.state_pressed)  // pressed
    );
    //This array works:
    var colors: IntArray = intArrayOf(
        foregroundColor,
        accentColor,
        accentColor
    );
    val myList: ColorStateList = ColorStateList(states, colors);

Tim.. 32

您正在尝试将IntArrays放在另一个数组中以使其成为二维的.该数组的类型不能是intArray,这就是失败的原因.用arrayOf而不是包装你的初始数组intArrayOf.

val even: IntArray = intArrayOf(2, 4, 6)
val odd: IntArray = intArrayOf(1, 3, 5)

val lala: Array = arrayOf(even, odd)


小智.. 29

您可以将此行代码用于Integer数组.

val array = Array(row, {IntArray(column)})

这行代码非常简单,就像一维数组一样,也可以像java二维数组一样访问.



1> Tim..:

您正在尝试将IntArrays放在另一个数组中以使其成为二维的.该数组的类型不能是intArray,这就是失败的原因.用arrayOf而不是包装你的初始数组intArrayOf.

val even: IntArray = intArrayOf(2, 4, 6)
val odd: IntArray = intArrayOf(1, 3, 5)

val lala: Array = arrayOf(even, odd)



2> 小智..:

您可以将此行代码用于Integer数组.

val array = Array(row, {IntArray(column)})

这行代码非常简单,就像一维数组一样,也可以像java二维数组一样访问.



3> A-Sharabiani..:

简短答案:

// A 6x5 array of Int, all set to 0.
var m = Array(6) {Array(5) {0} }

这是另一个示例,其中提供了有关发生的情况的更多详细信息:

// a 6x5 Int array initialise all to 0
var m = Array(6, {i -> Array(5, {j -> 0})})

第一个参数是大小,第二个lambda方法用于初始化。

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有