gpt4 book ai didi

scala - 是否可以对 String 类型进行模式匹配并修剪结果?

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

假设我有这样的代码:

def isCryptoExample(parts: Seq[Any]): Boolean = parts match {
case List(loneWord) => false
case List(subject: String, verb: String) =>
((subject.trim startsWith "Alice") || (subject.trim startsWith "Bob")) &&
((verb.trim == "encrypts") || (verb.trim == "decrypts"))
}

那些重复的 .trim 调用很丑陋,但是添加像 val subjectTrimmed = subject.trim 这样的语句几乎是一个同样丑陋的解决方法。有什么方法可以在 case 语句中立即修剪模式匹配变量?

最佳答案

您可以定义自己的 Trimmed 提取器:

object Trimmed {
def unapply(s: String): Option[String] = Some(s.trim)
}

然后像这样使用它:

def isCryptoExample(parts: Seq[Any]): Boolean = parts match {
case List(loneWord) => false
case List(Trimmed(subject), Trimmed(verb)) =>
((subject startsWith "Alice") || (subject startsWith "Bob")) &&
((verb == "encrypts") || (verb == "decrypts"))
}

Daniel Westheide 有 an excellent introduction提取器是什么以及它们如何工作。

关于scala - 是否可以对 String 类型进行模式匹配并修剪结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31106548/

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