【问题标题】:Elm : extract a record values from a list of stringElm :从字符串列表中提取记录值
【发布时间】:2016-06-21 14:29:30
【问题描述】:

我尝试制作一个函数,它接受记录和属性名称列表并将值作为字符串列表返回:

Model -> (List String) -> (List String)

目标是以后能够将记录动态呈现到 HTML 表中:

Model -> (List String) -> (Html Cmd)

我成功实现了这个:

import Html exposing (text)

type Field
  = FieldInt Int
  | FieldString String

type alias Model = 
  { name: Field
  , age: Field
  }

user1 = Model (FieldString "foo") (FieldInt 3)

field2text: Field -> String
field2text field =
  case field of
    FieldInt value ->
      toString value
    FieldString value ->
      value

updateModel: (List (a -> Field)) -> (List String)
model2values fns model =
  List.map (\fn -> field2text <| fn model) fns

main =
  text <| toString (model2values [.name, .age] user1)

如何更新model2values 函数以将最后一行更改为:

main =
  text <| toString (model2values ["name", "age"] user1)

【问题讨论】:

    标签: functional-programming elm


    【解决方案1】:

    没有什么好办法,所以只剩下:

    toFieldGetter : String -> (a -> Field)
    toFieldGetter : name = 
        case name of 
            "name" -> .name
            ...
    
    model2values_ = model2values << List.map toFieldGetter
    
    main =
      text <| toString (model2values_ ["name", "age"] user1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      相关资源
      最近更新 更多