是否有办法将其干燥?
我不想重复LoadObjectAsync
和contents : List Nav
wrapperId : String
答案 0 :(得分:2)
是的!您可以将公共字段移动到单独的记录中,并向其中添加行变量。然后可以在以后提供指定剩余字段的行变量a
:
type alias CommonModel a =
{ a
| contents : List Nav
, wrapperId : String
}
type alias InputModel =
CommonModel
{ containerClassName : Maybe String }
type alias Model =
CommonModel
{ containerClassName : String }
您还可以使用行变量来编写接受具有公共字段的任何记录的函数。例如
getWrappedId : CommonModel a -> String
getWrapperId { wrapperId } = wrappedId
将同时接受InputModel
和Model
,或接受至少包含CommonModel
指定的字段的任何其他记录。像任何其他类型变量一样,将推断行变量。