gpt4 book ai didi

kotlin - 使用 'or'运算符将值与两个值进行比较

转载 作者:行者123 更新时间:2023-12-02 13:01:45 24 4
gpt4 key购买 nike

我有一个简单的if ()条件,需要检查值是1还是2(例如)。假设我们要比较的值不是“简单”的:

if(it.first().property.value == 1 || it.first().property.value == 2) {
// Do stuff
}

有没有更好的方法执行此检查(无需键入整个表达式两次来获取实际值)?唯一想到的是
if(listOf(1, 2).contains(it.first().property.value)) {
// Do stuff
}

但是,由于引入了额外的 list,恐怕会消耗更多的内存。

最佳答案

您的最后一个建议通常是一个好的建议,尽管通常最好使用预定义的列表(以及in运算符):

// At the top level, or in a (companion) object:
val acceptableValues = listOf(1, 2)

// Then in the relevant part of the code:
if (it.first().property.value in acceptableValues)
// Do stuff

这样只会分配一次列表,而性能几乎与任何其他选项一样好。它也很易读,而且通用。

(如果列表不自然地适合命名的属性,则您必须判断可能需要多久一次,以便将较小的性能 yield 与直接置于条件中的简洁性进行交易。)

实际上,由于您要查找连续的整数,因此此特定测试有一个更简洁的选项:
if (it.first().property.value in 1..2)
// Do stuff

只要可接受的值形成一个(不间断的)范围,这将起作用。

另外,如果您始终要检查两个值,则可以编写一个简单的扩展函数:
fun <T> T.isEither(a: T, b: T) = this == a || this == b

(您可以使用 vararg参数编写一个更通用的参数,但是每次都会创建一个数组-与我们开始的 in listOf()情况非常相似。)

关于kotlin - 使用 'or'运算符将值与两个值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62171226/

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