Çöđ*_*xěŕ 1 dictionary pattern-matching elm
我正在尝试检查给定密钥中是否存在dict给定密钥。我对Elm函数式编程比较陌生,所以我不确定哪里出错了。
我收到的错误是:
箭头只应出现在case表达式和匿名函数中。也许您想要>或> =代替?
这是我尝试返回true或false
dictExist : comparable -> Dict comparable v -> Bool
dictExist dict key =
Dict.get key dict
Just -> True
Maybe.Maybe -> False
Run Code Online (Sandbox Code Playgroud)
另一方面,我也尝试过该Dict.member方法,但也没有成功,因此Dict.get我假设我应该使用它而不是Dict.member...
您的代码有四个问题:
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
Run Code Online (Sandbox Code Playgroud)
但这实际上只是对它的复制Dict.member,它具有完全相同的类型签名。因此,替换dictExistwith的任何用法Dict.member应完全相同。