gpt4 book ai didi

scala:在条件中指定不同备选方案的快捷方式(运算符 isOneOf)

转载 作者:行者123 更新时间:2023-12-04 19:50:06 26 4
gpt4 key购买 nike

我经常有类似下面的代码

if (operator == Equal || operator == Missing || operator == Unknown) {

为了使它不那么冗长和更具可读性,有时我会发出:

if(列表(相等,缺失,未知).contains(运算符)){

我知道我也可以发出模式匹配,像这样

operator match {
case Equal | Missing | Unknown => {

这带来了另一层嵌套大括号

我想知道是否有某种方法像

if (operator.isOneOf(List(Equal, Missing, Unknown))) {

--

编辑:

展示如何使用此处出现的不同选项:

将 Set 作为函数使用

if (Set(1, 2, 3)(3)) {
"Gotcha"
} else {
"no luck..."
}

使用 PartialFunction.cond

import PartialFunction.cond

if (cond(3) { case 1 | 2 | 3 => true }) {
"Gotcha"
} else {
"no luck..."
}

实现 isOneOf

class ComparableWithIsOneOf[T](val value: T) {
def isOneOf(values: T*): Boolean = {
values.contains(value)
}
}
object Comparison {
object implicits {
implicit def AnyToComparableWithIsOneOf[T](value: T): ComparableWithIsOneOf[T] = {
return new ComparableWithIsOneOf(value)
}
}
}

import Comparison.implicits._

if (3.isOneOf(1, 2, 3)) {
"Gotcha"
} else {
"no luck..."
}

最后我更喜欢 Set() 版本,但我认为最好的是坚持模式匹配,更标准和惯用......

最佳答案

你可以写

if (Set(Equal, Missing, Unknown)(operator)) { ...

Set 是一个函数等...

关于scala:在条件中指定不同备选方案的快捷方式(运算符 isOneOf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12448811/

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