知识点补充-传数组

38 阅读1分钟

kotlin 中传一整个数组过去,结果报crash,看了一下是定义了一个方法

fun getString(context: Context, id: Int, vararg params: Any): String{
//......
return context.createConfigurationContext(configuration).resources.getString(id, params)

}

这样的传法会让params被识别为一个整体,而不是单个元素,需要在params前面加一个*

关于* 号在kotlin中的用法有几种,这里补充一下遗漏的知识,查漏补缺

  1. 作为乘法运算符: * 用于数学运算中的乘法,例如 2 * 3 结果为6。

  2. 展开操作符(Spread Operator): * 用于将数组或可变参数(vararg)展开成单个元素,常用于函数调用。

    • 例如,如果有一个整型数组 intArrayOf(1, 2, 3),可以使用 foo(*intArrayOf(1, 2, 3)) 将数组元素作为单独的参数传递给函数 foo,相当于 foo(1, 2, 3)
    • 如果函数定义为 fun foo(vararg args: Int),则 * 运算符可以用来将一个 IntArray 传递给 args
  3. 类型声明中的泛型通配符: * 也可以用作类型参数的泛型通配符,表示“任何类型”。在某些泛型相关的场景下,例如在需要使用泛型类型但是又不想指定具体类型时,可以使用 *