Elm 给我指定号码 Int
Elm specify number to me Int
我正在尝试查看给定列表的长度是否等于某个数字。但是 ==
期望两个数字不是 Int,所以即使我键入 (==) 1
类型仍然是 number -> Bool
所以最后当我输入 lenght
的结果时我得到编译错误:
-- TYPE MISMATCH ---------------------------------------------------------- REPL
This function cannot handle the argument sent through the (|>)
pipe:
4| List.length |> ((==) 1)
^^^^^^
The argument is:
List a -> Int
But (|>)
is piping it to a function that expects:
number
Hint: Only Int and Float values work as numbers.
那么如何指定我的常量是 Int 而不是数字变量呢?
我认为您可能想多了,在 Elm 中检查相等性与在其他语言中一样简单。
myList = [1, 2, 3]
List.length myList == 3 // True
如果你确实想使用 (==)
函数,以防你正在使用柯里化或其他原因
List.length myList |> (==)
然后您可以将其存储为变量或立即调用它
List.length myList |> (==) 3 // True
或
lengthChecker = List.length myList |> (==)
lengthChecker 3 // True
但我会说,最好坚持使用 ==
进行检查的简单版本。
为了进一步说明您的尝试未通过编译的原因,(==)
的签名是 (==) : a -> a -> Bool
,这意味着它是一个接受一个参数的函数,a
和 returns 一个接受一个参数的函数,a
和 returns 一个 Bool
。所以在你的例子中 ((==) 1)
是一个需要 number
的函数。当您执行 List.length |> ((==) 1)
时,您正在尝试调用该函数,该函数需要一个带有 List.length
函数本身的数字。
使用>>
组合函数。
isLengthOne = List.length >> ((==) 1)
是一个检查列表长度是否为 1 的函数。
|>
将一个语句的输出通过管道传输到下一个语句的输入。
所以 aList |> List.length |> ((==) 1)
会检查 aList
。
我正在尝试查看给定列表的长度是否等于某个数字。但是 ==
期望两个数字不是 Int,所以即使我键入 (==) 1
类型仍然是 number -> Bool
所以最后当我输入 lenght
的结果时我得到编译错误:
-- TYPE MISMATCH ---------------------------------------------------------- REPL
This function cannot handle the argument sent through the
(|>)
pipe:4| List.length |> ((==) 1) ^^^^^^
The argument is:
List a -> Int
But
(|>)
is piping it to a function that expects:number
Hint: Only Int and Float values work as numbers.
那么如何指定我的常量是 Int 而不是数字变量呢?
我认为您可能想多了,在 Elm 中检查相等性与在其他语言中一样简单。
myList = [1, 2, 3]
List.length myList == 3 // True
如果你确实想使用 (==)
函数,以防你正在使用柯里化或其他原因
List.length myList |> (==)
然后您可以将其存储为变量或立即调用它
List.length myList |> (==) 3 // True
或
lengthChecker = List.length myList |> (==)
lengthChecker 3 // True
但我会说,最好坚持使用 ==
进行检查的简单版本。
为了进一步说明您的尝试未通过编译的原因,(==)
的签名是 (==) : a -> a -> Bool
,这意味着它是一个接受一个参数的函数,a
和 returns 一个接受一个参数的函数,a
和 returns 一个 Bool
。所以在你的例子中 ((==) 1)
是一个需要 number
的函数。当您执行 List.length |> ((==) 1)
时,您正在尝试调用该函数,该函数需要一个带有 List.length
函数本身的数字。
使用>>
组合函数。
isLengthOne = List.length >> ((==) 1)
是一个检查列表长度是否为 1 的函数。
|>
将一个语句的输出通过管道传输到下一个语句的输入。
所以 aList |> List.length |> ((==) 1)
会检查 aList
。