【问题标题】:Kotlin send me this error: For-loop range must have an 'iterator()' methodKotlin 发给我这个错误:For-loop range must have an 'iterator()' method
【发布时间】:2018-11-25 02:54:51
【问题描述】:
data class precioSuper(var producto:String, var precio: Int, val codigoDeBarras:String)

fun main(args: Array<String>) {
    //Qué vende o super?
    val galletas = precioSuper("galletas", 3, "0001")
    val chocolate = precioSuper("chocolate", 5, "0002")
    val leite = precioSuper("leite", 2, "0003")

    var productos = arrayListOf<String>("galletas", "chocolate", "leite")

    var totalProductos = productos.size
    var codigoDeBarras2 = for(producto in totalProductos)

}

在代码 var codigoDeBarras2 = for(producto in totalProductos) kotlin 中向我发送此错误:“For-loop range must have an 'iterator()' method”

错误正是在“totalProductos”“for(producto in totalProductos)”中

【问题讨论】:

  • productos.size 在我看来不像是收藏;它看起来像一个单一的值。您将其分配给totalProductos 变量,然后尝试在for(producto in totalProductos) 中对其进行迭代。

标签: kotlin


【解决方案1】:

错误是您将for 循环分配给一个变量。
for 不是表达式,不能赋值。
此外,表达式 producto in totalProductos 没有意义,因为您将 totalProductos 视为 Collection,但它只是一个整数。
如果您想遍历列表productos 的项目,您可以这样做:

for (producto in productos) {
    //..............
}

for (i in 0 until totalProductos) {
    //..............
}

productos.forEach { 

}

【讨论】:

    【解决方案2】:

    假设您正在尝试“提取”producto 列表的 producto 属性。那你可以试试

    var codigoDeBarras2 = productos.map { it.producto }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 2018-09-30
      • 2021-04-23
      相关资源
      最近更新 更多