如何将字符串记录转换为elm中的浮点数

我有用户提供的记录:

type alias Model =
  { age : String,
    weight : String,
    height : String,
    appetite : String
  }

我想将其转换为数字:

type alias FloatModel =
  { age : Float,
    weight : Float,
    height : Float,
    appetite : Float
  }

我的挣扎是,如果用户输入了错误的数据,这String.toFloat可能会回来Nothing。所以我想我想要一个Maybe FloatModel处理坏数据。我如何调用String.toFloat每个成员,如果他们都成功返回Just FloatModel,如果没有返回Nothing

回答

如果您想保留 的完整性FloatModel,以便所有字段都是Float值,您可以使用一个接受 aModel并返回 a的函数,该函数Maybe FloatModel仅在可以解析所有字段时成功。

这可以通过映射每个字段来完成,这样单个失败就会“冒泡”并导致函数返回Nothing

deserializeModel : Model -> Maybe FloatModel
deserializeModel { age, weight, height, appetite } =
    Maybe.map4 FloatModel
        (String.toFloat age)
        (String.toFloat weight)
        (String.toFloat height)
        (String.toFloat appetite)


以上是如何将字符串记录转换为elm中的浮点数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>