榆树 Maybe.withDefault
Elm Maybe.withDefault
我需要在我的一个更新函数中解包 Maybe -值:
update msg model =
case msg of
UpdateMainContent val ->
Maybe.withDefault 100 (Just 42)
model
这当然是伪代码,
Maybe.withDefault 100 (Just 42)
直接从 documentation for Maybe 中取出,实际上不应该做任何事情。编译器抱怨说:
Detected errors in 1 module.
-- TYPE MISMATCH ----------------------------------- ./src/Review/Form/State.elm
The 1st argument to function `withDefault` is causing a mismatch.
15|> Maybe.withDefault 100 (Just 42))
16| -- Maybe.withDefault 100 (model.activeItem)
17| model
Function `withDefault` is expecting the 1st argument to be:
a -> b
But it is:
number
为什么说 "withDefault" 期望第一个参数是
a -> b
定义为
时
a -> Maybe a -> a
在文档中?
您不小心离开了 model
:
UpdateMainContent val ->
Maybe.withDefault 100 (Just 42)
model -- <-- here
这使得类型推断算法认为 Maybe.withDefault 100 (Just 42)
应该评估一个可以采用此 model
参数的函数。为了使它有意义,它期望 100
和 42
是函数,但它们不是,所以它告诉你。
看一个有效的例子可能会有所帮助:
f : Int -> Int
f x = x + 1
Maybe.withDefault identity (Just f) 0
这将计算为 1。
我需要在我的一个更新函数中解包 Maybe -值:
update msg model =
case msg of
UpdateMainContent val ->
Maybe.withDefault 100 (Just 42)
model
这当然是伪代码,
Maybe.withDefault 100 (Just 42)
直接从 documentation for Maybe 中取出,实际上不应该做任何事情。编译器抱怨说:
Detected errors in 1 module.
-- TYPE MISMATCH ----------------------------------- ./src/Review/Form/State.elm
The 1st argument to function `withDefault` is causing a mismatch.
15|> Maybe.withDefault 100 (Just 42))
16| -- Maybe.withDefault 100 (model.activeItem)
17| model
Function `withDefault` is expecting the 1st argument to be:
a -> b
But it is:
number
为什么说 "withDefault" 期望第一个参数是
a -> b
定义为
时a -> Maybe a -> a
在文档中?
您不小心离开了 model
:
UpdateMainContent val ->
Maybe.withDefault 100 (Just 42)
model -- <-- here
这使得类型推断算法认为 Maybe.withDefault 100 (Just 42)
应该评估一个可以采用此 model
参数的函数。为了使它有意义,它期望 100
和 42
是函数,但它们不是,所以它告诉你。
看一个有效的例子可能会有所帮助:
f : Int -> Int
f x = x + 1
Maybe.withDefault identity (Just f) 0
这将计算为 1。