gpt4 book ai didi

scala - 使用模式匹配查找子列表

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

我需要使用模式匹配来查找子列表,我该怎么做?

val list1 = List(2, 3)
val list2 = List(1, "2", list1, "r")
val list3 = list2 match {
case // insert match statement here
case _ => "failed"
}

assertEquals(list1, list3)

我不能改变给定的代码,我只能在这里插入代码case//在此处插入匹配语句这是学校的任务(不是工作)

最佳答案

您不需要匹配,您需要查找:

list2.find(_ == list1)

将为您提供 Some(List(2, 3))(如果找不到,则为 None)。要完全匹配您的代码,您需要:

list2.find(_ == list1).getOrElse("failed")

虽然使用 Option 而不是可能的字符串是处理错误情况的更好方法。

如果你真的想使用匹配,你必须递归地做:

final def findOrFailed(xs: List[Any], what: Any): Any = xs match {
case x :: rest => if (x == what) x else findOrFailed(rest,what)
case _ => "failed"
}

(同样,我更喜欢一个选项,但我在这里给出了字符串版本。)

关于scala - 使用模式匹配查找子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209317/

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