1

有没有办法查看一个列表,当你找到值 4 和 5 时,做点什么?

我试过foo (4:5:xs) = <do something>但它没有编译

4

1 回答 1

5

您还必须描述当您找不到 4 和 5 时会发生什么

假设您希望在"Found"看到 4 和 5 时返回字符串,"Not found"否则。然后你可以使用这个功能:

foo :: [Int] -> String
foo (4:5:xs) = "Found"
foo (_:xs) = foo xs
foo [] = "Not found"

如果您在看不到 4 和 5 时不想“做任何事情”,则必须将函数的返回类型更改为Maybe String(在此示例中):

foo :: [Int] -> Maybe String
foo (4:5:xs) = Just "Found"
foo (_:xs) = foo xs
foo [] = Nothing

我会使用第二个版本,这样您就不必记住“未找到”的值是什么。

于 2012-10-13T21:08:20.053 回答