Elm View函数返回一个函数,而不是它的值

问题描述 投票:0回答:2

榆木编译器在我的视图函数中给我这个错误...

TYPE MISMATCH-此case表达式的第二个分支不正确:

       div [] [
        div [] [text (String.fromInt value)],
        div [] [button [ onClick identity ] [ text "Enter number" ]]]

div调用产生:

Html #(a -> a)#

但是view上的类型注释应为:

Html #Msg#Elm

有人知道我该如何解决此问题?

谢谢!

module Main exposing (..)

import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)



-- MAIN


main =
  Browser.sandbox { init = init, update = update, view = view }



-- MODEL


type alias Model = 
    Result String Int


init : Model
init =
  Result.Ok 0



-- UPDATE


type alias Msg = Int



update : Msg -> Model -> Model
update msg model =
  collatz msg


collatz : Int -> Result String Int
collatz start =
    if start <= 0 then
        Result.Err "Only positive numbers are allowed"

    else
        Result.Ok (collatzHelper start 0)


collatzHelper : Int -> Int -> Int
collatzHelper start counter =
    if start == 1 then
        counter

    else if modBy 2 start == 0 then
        collatzHelper (start // 2) (counter + 1)

    else
        collatzHelper (3 * start + 1) (counter + 1)



-- VIEW


view : Model -> Html Msg
view model =
    case model of
        Err err ->
            div [] [text err]

        Ok value ->
            div [] [
            div [] [text (String.fromInt value)],
            div [] [button [ onClick identity ] [ text "Enter number" ]]]


elm
2个回答
1
投票

与Elm一样,编译器错误消息很容易理解。问题是此行中的onClick属性:


0
投票

与Elm一样,编译器错误消息很容易理解。问题是此行中的onClick属性:

© www.soinside.com 2019 - 2024. All rights reserved.