当前位置:  开发笔记 > 编程语言 > 正文

榆树 - 结合和分类多种类型

如何解决《榆树-结合和分类多种类型》经验,为你挑选了1个好方法。

上周我正在试验榆树(所以考虑我是初学者)并且想知道以下情况,

我已经定义了多个类型Foo和Bar,例如都有一个日期字段.

type alias Foo = 
{
    date : String,
    check : Bool
}

type alias Bar = 
{
    date : String,
    check : Bool,
    text : String
}

是否可以通过使用排序来组合和排序两个列表?(排序)我想这样做来创建一个列表来呈现所有项目.

谢谢!



1> Chad Gilbert..:

您可以创建一个联合类型,允许您具有混合Foo和Bar的列表:

type Combined
  = FooWrapper Foo
  | BarWrapper Bar

现在您可以组合两个Foos和Bars列表,然后使用一个case语句作为sortBy参数:

combineAndSort : List Foo -> List Bar -> List Combined
combineAndSort foos bars =
  let
    combined =
      List.map FooWrapper foos ++ List.map BarWrapper bars
    sorter item =
      case item of
        FooWrapper foo -> foo.date
        BarWrapper bar -> bar.date
  in
    List.sortBy sorter combined

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有