我正在尝试检查给定密钥的dict
中是否存在给定密钥。我对Elm
和函数式编程比较陌生,所以我不确定哪里出了问题。
我收到的错误是:
箭头仅应出现在case表达式和匿名函数中。也许 您想要>还是> =代替?
这是我尝试返回true
或false
dictExist : comparable -> Dict comparable v -> Bool
dictExist dict key =
Dict.get key dict
Just -> True
Maybe.Maybe -> False
另一方面,我也尝试过Dict.member
,但也没有成功,因此我假设应该使用Dict.get
来代替Dict.member
。
答案 0 :(得分:5)
您的代码有四个问题:
case ... of
表达式外的箭头。Maybe
类型的Just
构造函数具有一个伴随值,即dict中的项目,但您并未将其绑定到任何东西。您必须通过将其分配给通配符模式_
来显式丢弃它。Maybe.Maybe
不是构造函数。这应该是Nothing
,它是Maybe
类型的另一个构造函数。dictExist
的参数顺序已解决了这些问题,此代码应该可以工作:
dictExist : comparable -> Dict comparable v -> Bool
dictExist key dict =
case Dict.get key dict of
Just _ -> True
Nothing -> False
但这实际上只是Dict.member
的复制品,其中有the exact same type signature。因此,以dictExist
替换Dict.member
的任何用法应完全相同。