如何使用 zipWithIndex 创建函数 returns scala 中 List[Int] 中的 Int
How to create a function with zipWithIndex that returns an Int from a List[Int] in scala
我正在尝试使用 zipWithIndex 通过创建一个采用 List[Int][ 的方法函数来索引我列表中的第一个负值=26=] 并将 return 一个 Int 或一个选项 [Int] 供我使用。首先,我使用 zipWithIndex 创建了列表和函数,但我一直收到类型不匹配错误:
val list = List(-2,-1,2,3,4)
def getNegativeIndex(xs: List[Int]): Int = {
for ((x, count) <- xs.zipWithIndex if x < 0) yield(count)
}
这是我不断收到的错误:
type mismatch;
found : List[Int] => Int
required: Int
我的目标是索引列表的第一个负值 "list"
即我的结果应该是 getNegativeIndex(list) == 0 使用我提供的列表,因为第一个元素 -2 位于索引 0
请问,我需要在上述功能中添加或删除什么才能实现我的目标
为了 getNegativeIndex(list)
到 return 一个整数和您想要的值,您只需要 return 您的理解生成的列表的 headOption
.
当前的for-comprehension相当于
xs.zipWithIndex.filter(_._1 < 0).map(_._2)
。所以你可以这样做
xs.zipWithIndex.filter(_._1 < 0).map(_._2).headOption
或者像这样将 headOption
添加到您的理解中
(
for ((x, count) <- xs.zipWithIndex if x < 0) yield(count)
).headOption
结果将是相同的,即函数 return 是列表中负数的第一个索引,或者 None
如果所有都是非负数。您可以改为使用 .head
直接获取整数,但请注意,如果列表不包含任何负数或为空,它将引发异常。
我正在尝试使用 zipWithIndex 通过创建一个采用 List[Int][ 的方法函数来索引我列表中的第一个负值=26=] 并将 return 一个 Int 或一个选项 [Int] 供我使用。首先,我使用 zipWithIndex 创建了列表和函数,但我一直收到类型不匹配错误:
val list = List(-2,-1,2,3,4)
def getNegativeIndex(xs: List[Int]): Int = {
for ((x, count) <- xs.zipWithIndex if x < 0) yield(count)
}
这是我不断收到的错误:
type mismatch;
found : List[Int] => Int
required: Int
我的目标是索引列表的第一个负值 "list" 即我的结果应该是 getNegativeIndex(list) == 0 使用我提供的列表,因为第一个元素 -2 位于索引 0
请问,我需要在上述功能中添加或删除什么才能实现我的目标
为了 getNegativeIndex(list)
到 return 一个整数和您想要的值,您只需要 return 您的理解生成的列表的 headOption
.
当前的for-comprehension相当于
xs.zipWithIndex.filter(_._1 < 0).map(_._2)
。所以你可以这样做
xs.zipWithIndex.filter(_._1 < 0).map(_._2).headOption
或者像这样将 headOption
添加到您的理解中
(
for ((x, count) <- xs.zipWithIndex if x < 0) yield(count)
).headOption
结果将是相同的,即函数 return 是列表中负数的第一个索引,或者 None
如果所有都是非负数。您可以改为使用 .head
直接获取整数,但请注意,如果列表不包含任何负数或为空,它将引发异常。