如何将字符串记录转换为榆树中的浮点数
How to convert a record of strings to floats in 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
可能 return Nothing
。所以我想我想要一个 Maybe FloatModel
来处理坏数据。我怎样才能对每个成员调用 String.toFloat
,如果他们都成功了 return Just FloatModel
如果没有 return Nothing
?
如果您想保留 FloatModel
的完整性,以便所有字段都是 Float
值,您可以使用一个带有 Model
和 return 的函数s 一个Maybe FloatModel
,只有当所有字段都可以解析时才成功。
这可以通过 mapping over each of the fields 来完成,这样一次失败就会“冒泡”并导致函数 return 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)
我有一条用户提供的记录:
type alias Model =
{ age : String,
weight : String,
height : String,
appetite : String
}
我想把它转换成数字:
type alias FloatModel =
{ age : Float,
weight : Float,
height : Float,
appetite : Float
}
我的挣扎是,如果用户输入了错误数据,String.toFloat
可能 return Nothing
。所以我想我想要一个 Maybe FloatModel
来处理坏数据。我怎样才能对每个成员调用 String.toFloat
,如果他们都成功了 return Just FloatModel
如果没有 return Nothing
?
如果您想保留 FloatModel
的完整性,以便所有字段都是 Float
值,您可以使用一个带有 Model
和 return 的函数s 一个Maybe FloatModel
,只有当所有字段都可以解析时才成功。
这可以通过 mapping over each of the fields 来完成,这样一次失败就会“冒泡”并导致函数 return 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)