【问题标题】:Create a list os Kotlin with de result of a repeated function使用重复函数的结果创建 Kotlin 列表
【发布时间】:2022-01-10 15:15:10
【问题描述】:

我有一个很长的方法,它使用添加两个数字的函数的结果创建一个列表:

private fun Add(one: Int, two:Int) : Int {

 return one + two
}

private val myList = listOf(
 Add(1, 2),
 Add(2, 3),
 Add(3, 4),
 Add(4, 5),
 Add(5, 6),
 Add(6, 7),
 Add(8, 9),
 ...
)

在 kotlin 中有没有一种方法可以创建这个列表而不总是重复“添加”函数的名称?

我尝试过使用“with”和“apply”,但我认为我没有正确使用它。

【问题讨论】:

  • 它会起作用吗? private val myList = listOf(3, 5, 7, 9, 11, 13, 17, ...)
  • 不,函数“Add”有两个参数。列表包含两个参数之和的结果
  • 你有一些使用Add函数的模式吗?是斐波那契数列吗?
  • 你如何确定应该添加哪些数字?
  • 是随机生成的数字:)

标签: android list loops kotlin parameter-passing


【解决方案1】:

如果数字是随机生成的,那么您可以使用一些循环来填充列表,例如:

private val myList = genarateAndAdd(20)

private fun generateAndAdd(count: Int): List<Int> {
    val list = mutableListOf<Int>()
    repeat(count) {
        list.add(Add(Random.nextInt(), Random.nextInt()))
    }
    return list
}

其中countmyList 列表的大小。

【讨论】:

    【解决方案2】:

    你可以用这个:

    import java.util.Random
    
    val random = Random()
    
    val myList = (0..<size of your list>).map{add(random.nextInt(), random.nextInt())}
    

    【讨论】:

      【解决方案3】:

      不是这个

      private val myList = listOf(
          Add(1, 2),
          Add(2, 3),
          Add(3, 4),
          Add(4, 5),
          Add(5, 6),
          Add(6, 7),
          Add(8, 9)
      )
      

      你可以这样写

      private val myList = listOf(
          1, 2,
          2, 3,
          3, 4,
          4, 5,
          5, 6,
          6, 7,
          8, 9
      ).chunked(2).map { Add(it[0],it[1]) }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 2019-10-24
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 2014-08-29
        相关资源
        最近更新 更多