gpt4 book ai didi

scala - while 循环的最佳纯功能替代方案

转载 作者:行者123 更新时间:2023-12-04 15:53:34 26 4
gpt4 key购买 nike

下面的代码是更好的功能性习语替代品吗?即是否有更简洁的方法来获取值 j 而无需使用 var?

var j = i + 1
while (j < idxs.length && idxs(j) == x) j += 1

最佳答案

val j = idxs.drop(i).indexWhere(_ != x) + i

或者,正如@kosii 在评论中所建议的那样,使用 indexWhere从哪里开始搜索获取索引的重载:

val j = idxs.indexWhere(_ != x, i)

编辑

因为 j 必须等于 idxs 的长度,以防 i 之后的所有项目都等于 x:

val index = idxs.indexWhere(_ != x, i)
val j = if(index < 0) idxs.length else index

// or

val j = if (idxs.drop(i).forall(_ == x)) idxs.length
else idxs.indexWhere(_ != x, i)

关于scala - while 循环的最佳纯功能替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com