我正在尝试检查给定键是否存在给定键的dict
。我对Elm
和函数式编程相对较新,所以我不确定我哪里出错了。
我收到的错误是:
箭头应仅出现在大小写表达式和匿名函数中。或 你想要>还是>=?
这是我尝试返回true
或false
dictExist : comparable -> Dict comparable v -> Bool
dictExist dict key =
Dict.get key dict
Just -> True
Maybe.Maybe -> False
另一方面,我也尝试了Dict.member
,但也没有成功,并且会假设我应该为此使用Dict.member
而不是Dict.get
......
您的代码有四个问题:
- 正如错误所指出的那样,您使用的是
case ... of
表达式外部的箭头。 Maybe
类型的Just
构造函数具有伴随的值,即字典中的项,但您不会将其绑定到任何内容。您必须通过将它分配给通配符模式来显式丢弃它,_
.-
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
的重新调整。因此,将dictExist
的任何用法替换为Dict.member
应该完全相同。