我想看看给定列表的长度是否等于某个数字。但是==期望两个数字不是 Int,所以即使我输入(==) 1type 仍然number -> Bool是最后当我输入结果时lenght我得到编译错误:
- 类型不匹配 - - - - - - - - - - - - - - - - - - - - - - - ------------ REPL
此函数无法处理通过
(|>)管道发送的参数:Run Code Online (Sandbox Code Playgroud)4| List.length |> ((==) 1) ^^^^^^论据是:
Run Code Online (Sandbox Code Playgroud)List a -> Int但是
(|>)正在将它传递给一个期望的函数:Run Code Online (Sandbox Code Playgroud)number提示:只有 Int 和 Float 值可以用作数字。
那么如何指定我的常量是一个 Int 而不是 number 变量呢?
我认为您可能想多了,在 Elm 中检查相等性与在其他语言中一样直接。
myList = [1, 2, 3]
List.length myList == 3 // True
Run Code Online (Sandbox Code Playgroud)
如果您确实想使用该(==)功能,以防您进行柯里化或出于其他原因
List.length myList |> (==)
Run Code Online (Sandbox Code Playgroud)
然后您可以将其存储为变量或立即调用它
List.length myList |> (==) 3 // True
Run Code Online (Sandbox Code Playgroud)
或者
lengthChecker = List.length myList |> (==)
lengthChecker 3 // True
Run Code Online (Sandbox Code Playgroud)
但我会说最好坚持使用==.
只是为了扩大为什么你尝试没有编制,用于签名(==)的(==) : a -> a -> Bool意思是这是一个函数,有一个参数a,并返回一个函数,它接受一个参数,a并返回Bool。所以在你的情况下((==) 1)是一个需要number. 当你这样做时,List.length |> ((==) 1)你试图调用那个需要List.length函数本身的数字的函数。
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |