gpt4 book ai didi

typeerror - elm-lang 错误 `(==) is expecting the right side to be a:`

转载 作者:行者123 更新时间:2023-12-02 22:26:50 24 4
gpt4 key购买 nike

这里是榆树新手,一开始它让我非常疯狂,不知道这种挑剔语言的来龙去脉(即使在阅读了关于它的大量内容之后,因为它是如此不同和挑剔......我想这就是函数式语言的本质)所以当你尝试做一件简单的事情时就像一开始拉头发一样。

我收到以下错误:

The right side of (==) is causing a type mismatch.

29| get 0 arrayOfValues == 'X'
^^^
(==) is expecting the right side to be a:

Maybe Char

But the right side is:

Char

Hint: With operators like (==) I always check the left side first. If it seems

好吧,我认为它是正确的并检查右侧。所以问题可能出在左、右参数如何相互作用。测试:

it "blah blah blah" <|
let
someArray =
[ 'P', ' ' ]
in
expect (MyModule.doSomething someArray 'P') to equal 1
MyModule

doSomething : List Char -> Char -> Int
doSomething arrayOfValues symbol =
let
grid =
fromList arrayOfValues

found =
get 0 arrayOfValues == symbol
in
if found then
1
else
0

现在我假设但不确定,当尝试从数组中提取第一个值但不确定时,它什么也没有得到或得到什么。也许我认为 Char 没有返回任何内容?不,可能还有其他问题。

我想让上面的代码工作,然后重构..我确信可能有一种更优雅的方式来编码我上面编码的内容,但首先要做的就是修复这个错误并更好地理解它现有代码。错误消息虽然很好,但对于如何处理以及处理什么内容对我来说并不那么明显。我有一些假设,但不完全确定如何处理导致问题的行为。

最佳答案

榆树的独特之处在于确定性。任何变量(可能不是类型)肯定会有一个定义类型的值。

但是当涉及到数组或列表时,就无法确定数组中是否有索引“i”上的元素。可能有一个元素,也可能没有。

因此 elm 有 Maybe 的概念,所以从概念上来说

Maybe String = [ Just "string_value" | Nothing ] 

Array.get 的别名是

get : Int -> Array a -> Maybe a

需要 Int - 索引和 Array a - 数组元素数据类型的数组作为参数和返回 Maybe a - 同样,a 是数组元素的数据类型

考虑一个例子

array = 
fromList ["one", "two"]


val1 =
get 0 array -- will return 'Just "one"'

val2 =
get 3 array -- will return 'Nothing', since the element does not exists

这样,当你有值(value)和没有值(value)时,你总是需要处理两种情况

case val1 of
Nothing ->
-- Raise some error message
Just val ->
-- `val` is the actual element/value found

如果您始终需要默认值,可以使用

Maybe.withDefault "default_string" val1

这将始终返回一个字符串值,并将返回 "default_string"当该值为空时,否则为实际找到的值

关于typeerror - elm-lang 错误 `(==) is expecting the right side to be a:`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52939116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com