Kotlin中如何便捷创建指定值矩阵 简化intArrayOf重复书写
Kotlin 二维Int数组简化创建方案
你期望的arrayOf<IntArray>((4, 5), (5, 8))这类直接用括号包裹行元素的写法Kotlin原生不支持:Kotlin中括号仅用于调整运算优先级、包裹参数列表,没有提供可变长度元组/数组字面量语法,无法直接实现该形式。不过可以通过两种轻量方案大幅简化写法,避免重复书写intArrayOf:
通用方案(不限制每行元素个数)
先在代码顶层定义一个极短命名的包装函数,对intArrayOf做一层薄封装:// 函数名可以按习惯取短,比如i、ia、row均可 fun i(vararg elements: Int) = intArrayOf(*elements)后续创建矩阵的代码可以简化为:
val matrix = arrayOf( i(4, 5), i(5, 8), i(1, 9), i(8, 10), i(1, 6) )该方案没有额外运行时开销,不管每行有多少个元素都能正常使用,是通用性最高的写法。
固定行长度方案(适配示例中每行2个元素的场景)
如果你要创建的矩阵每行元素个数固定,可以结合标准库的中缀函数封装专门的二维数组创建方法。比如每行固定2个元素时:fun intMatrix2D(vararg rows: Pair<Int, Int>): Array<IntArray> { return Array(rows.size) { intArrayOf(rows[it].first, rows[it].second) } }创建矩阵时写法更简洁:
val matrix = intMatrix2D( 4 to 5, 5 to 8, 1 to 9, 8 to 10, 1 to 6 )如果每行固定为3个元素,将Pair替换为标准库的Triple,调整对应转换逻辑即可。
内容的提问来源于stack exchange,提问作者ibrahim koz
相关产品推荐
相关产品推荐

