visual significa que funcion destring convertir convert cint cdbl elm

elm - significa - Cadena a la conversión int usando la función toInt



funcion cint visual basic (6)

Aquí se explica cómo proporcionar la conversión con un valor predeterminado en caso de que falle el análisis.

String.toInt "5" |> Result.toMaybe |> Maybe.withDefault 0

Estoy tratando de convertir una cadena a un entero usando String.toInt. Sin embargo, cuando quiero vincular el resultado a una variable y luego hacer algunos cálculos simples con él, obtengo este error:

La función add está esperando que el segundo argumento sea:

Int

Pero es:

Result String Int

¿Cómo puedo simplemente extraer la parte entera del resultado?


De acuerdo con la here , si está extrayendo un número de alguna entrada sin procesar del usuario, normalmente querrá usar Result.withDefault para manejar los datos Result.withDefault en caso de que falle el análisis. Puedes encadenar esta operación usando tuberías para un código más limpio:

String.toInt "5" |> Result.withDefault 0


El entero también se puede sacar usando

Result.withDefault 0 (String.toInt "2")

Puedes leer más sobre esto here


El método withDefault obliga a definir un valor que se puede usar para los cálculos, pero no siempre es posible establecer un valor que sea significativo para los errores. La mayoría de las veces necesitas todos los valores posibles, y el valor predeterminado no es el adecuado. Aquí proporciono una función de verificación de tipo de resultado que puede usar para decidir si usa o no el valor convertido:

isErrorResult r = case r of Err msg -> True Ok value -> False

Puedes usarlo así:

r = String.toInt "20b" if isErrorResult r then -- not a valid Interger, abort or whatever else -- a good integer, extract it a = Result.withDefault 0 r -- and make good use of it

el valor default (0 en este caso) pasado a withDefault tiene sentido, porque nos aseguramos de que r no sea un Err .


Usa el mapa:

answer = Result.map2 (+) (String.toInt "1") (String.toInt "2")

map2 :

Aplique una función a dos resultados, si ambos resultados están bien. Si no, el primer argumento que es un Err se propagará.

tener el resultado de add como una cadena

resultAsString r = case r of Err msg -> msg Ok value -> toString value resultAsString answer

para facilitar las cosas puedes crear una función addStrings :

addStrings : String -> String -> Result String Int addStrings a b = Result.map2 (+) (String.toInt a) (String.toInt b)

Incluso puede salirse con el tipo de Result :

addStrings : String -> String -> String addStrings a b = let r = Result.map2 (+) (String.toInt a) (String.toInt b) in case r of Err msg -> msg Ok value -> toString value

Pruebas

import Html exposing (Html, text) main : Html msg main = text (addStrings "1" "2") output 3


toInt puede fallar en el análisis. Necesita comprobarlo usando una declaración de caso:

case toInt str of Err msg -> ... -- do something with the error message Ok val -> ... -- val is an Int which you can add

Más sobre el resultado aquí