Kotlin 数组 - takeWhile() 函数



Kotlin 数组的 takeWhile() 函数用于返回一个列表,该列表包含数组中满足指定谓词的第一个元素。

这里,第一个元素表示将谓词应用于数组的第一个元素的结果,并存储在一个新列表中。

语法

以下是 Kotlin 数组 takeWhile() 函数的语法:

inline fun <T> Array<out T>.takeWhile(
   predicate: (T) -> Boolean
): List<T>

参数

此函数接受 **谓词** 作为参数。

返回值

此函数返回一个列表,其中包含满足谓词的第一个 n 个元素。

示例 1

以下是一个基本示例,用于演示如何使用 takeWhile() 函数返回一个列表,该列表包含小于指定谓词的第一个元素:

fun main(args: Array<String>){
   var arr = arrayOf(3, 4, 5, 6)
   print("Array elements: ")
   println(arr.joinToString())

   // use takeWhile function
   val list = arr.takeWhile({it<4})
   println("list: "+ list)
}

输出

上述代码生成以下输出:

Array elements: 1, 2, 3, 4, 5
List: [1, 2, 3]

示例 2

让我们看另一个例子。在这里,我们使用 **takeWhile** 函数返回一个列表,该列表包含长度小于 5 的第一个元素:

fun main(args: Array<String>){
   var arr = arrayOf<String>("Lily", "Rose", "Daisy", "Lotus", "Sunflower")
   print("Array elements: ")
   println(arr.joinToString())

   // use takeWhile function
   val list = arr.takeWhile({it.length<5})
   println("first n flower having length less than 5: ")
   println("list:" + list)
}

输出

以下是输出:

Array elements: Lily, Rose, Daisy, Lotus, Sunflower
first n flower having length less than 5: 
list:[Lily, Rose]

示例 3

让我们看下面的例子,我们有一个 Product 对象数组,我们想使用 takeWhile() 函数显示产品价格超过 100 的前 n 个元素:

data class Product(val name: String, val price: Double)
fun main(args: Array<String>) {
   val products = arrayOf(
      Product("Laptop", 999.99),
      Product("Mouse", 19.99),
      Product("Keyboard", 49.99),
      Product("Monitor", 199.99)
   )
   // use takeLast function
   val list = products.takeWhile{it.price>100}

   // Display the result
   println("Product and Price List: $list")
}

输出

上述代码产生以下输出:

Product and Price List: [Product(name=Laptop, price=999.99)]
kotlin_arrays.htm
广告